将数据从控制器传递到脚本是不好的做法?,即:
<script>
@foreach (... in ViewBag.X) {
$.mynamespace.x[i] = ...
}
</script>
通过“绕过视图”,我的意思是这样做:
<ul id="..." style="display:none;">
@foreach (... in ViewBag.X) {
<li id="...">...</li>
...
}
</ul>
然后在我的脚本中使用选择器,我可以填充我的$.mynamespace.x
数组。
答案 0 :(得分:4)
你这样做是不好的做法。正确的方法是对JSON进行编码,以确保所有值都从服务器到客户端javascript正确编码:
<script type="text/javascript">
$.mynamespace.x = @Html.Raw(Json.Encode(ViewBag.X));
</script>
现在,与直接生成标记相比,这是否正常取决于具体情况。但是如果你打算循环遍历这个javascript数组并将HTML吐入DOM,说实话,我并不是很清楚。继续直接在服务器上生成此标记(第二种方法)。
关于ViewBag
的最后评论:不要使用它。请改用强类型视图模型。