4

JavaScriptコードでかみそりを使用するのが良い習慣かどうか知りたいです。例えば:

<script type="text/javascript">
   var variable = @some.Id
</script>

または、このように、隠し値を作成してJavaScriptで取得する方がよいでしょうか。

<input type="hidden" id="someId" value"@some.Id" />

<script type="text/javascript">
   var variable = $('#someId').val();
</script>

編集:

@{
var formVariables = serializer.Serialize(new
                                             {
                                                 id = Model.Id, 
                                                 name = Model.Name, 
                                                 age = Model.Age
                                             });

<input type="hidden" id="header_variables" value="@formVariables"/>
<script type="text/javascript" src = "/Scipts/..."></script>
}

これは良い解決策ですか?

4

3 に答える 3

3

私は個人的に2番目のオプションの拡張子を使用して、別の.jsファイルを作成します。その理由は、UIのjquery / javascript部分を処理するためにサードパーティにワークアウトを委任する場合、サードパーティはバックエンド機能を確認する必要がないためです。

入力でhtml5属性(つまり、data-attribute ='foo')を使用するさまざまな方法があります。これにより、外部の.jsファイル内で解析できる一連のプロパティを使用して入力を「装飾」できます。

非常に簡単な例:

あなたの見解では:

<input type='text' id='myId' data-action='@Url.Action("MyAction")' class='myClass' />

.jsファイル内:

var targetAction = $('#myId').attr('data-action');

これにより、.jsとビューが完全に分離されます。もちろん、ある程度の計画が必要です。

お役に立てれば

于 2012-07-05T08:45:43.067 に答える
2

Razorはサーバー側で解析され、関連する出力に置き換えられます。したがって、私の意見では、JavascriptまたはHTMLに配置すると、まったく無関心になります。クライアント側では、出力値のみが表示されます。したがって、上記の例では、最初のオプションを選択します(JSに直接配置します)。これは、他の方法では不要な非表示の入力フィールドがないためです。

于 2012-07-05T08:27:30.923 に答える
1

この質問に対する正しい答えはないと思います。長所と短所のみ。

JavascriptでRazorを使用することの長所

  • スクリプトはビューモデルにバインドされています。そのため、モデルの変更は自動的に取得され、コンパイル時にエラーが検出されます。

短所

  • Webデザインのベストプラクティスとは異なり、スクリプトはマークアップと混合されます(ページを壊さないようにスクリプトを下部に配置します)。
  • スクリプトは、マークアップと混合されているため、コンパイル/縮小できません。
于 2012-07-05T08:31:17.363 に答える