4

コントローラからスクリプトにデータを渡すのは悪い習慣ですか?、すなわち:

<script>
   @foreach (... in ViewBag.X) {
         $.mynamespace.x[i] = ...
   }
</script>

「ビューをバイパスする」とは、次のようにすることを意味します。

<ul id="..." style="display:none;">
@foreach (... in ViewBag.X) {
    <li id="...">...</li>
   ...
}
</ul>

そして、セレクターを使用したスクリプトで、$.mynamespace.x配列を埋めることができました。

4

1 に答える 1

4

あなたのやり方は悪い習慣です。正しい方法は、JSON エンコードして、すべての値がサーバーからクライアント側の JavaScript に適切にエンコードされるようにすることです。

<script type="text/javascript">
   $.mynamespace.x = @Html.Raw(Json.Encode(ViewBag.X));
</script>

マークアップを直接生成する場合と比較してこれが問題ないかどうかは、正確なシナリオによって異なります。しかし、この JavaScript 配列をループして HTML を DOM に吐き出すつもりなら、正直なところ、私にはその要点がよくわかりません。サーバーでこのマークアップを直接生成します (2 番目の方法)。

についての最後の発言ViewBag: 使用しないでください。代わりに、厳密に型指定されたビュー モデルを使用してください。

于 2012-09-17T16:27:56.047 に答える