2012-09-17 156 views
4

将数据从控制器传递到脚本是一种不好的做法吗?,即:将数据从控制器传递到javascript(绕过视图)

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

通过“绕开查看”我的意思是做这种方式:使用选择我可以填补我$.mynamespace.x阵列

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

然后在我的脚本。

回答

4

你这样做的方式是一种不好的做法。正确的方法是,以JSON进行编码,以确保所有值都正确地从服务器编码,客户端的JavaScript:

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

现在,这是否是罚款相比,直接产生的标记将取决于确切的情况。但是,如果你打算循环这个javascript数组并将HTML吐入DOM中,说实话,我不太明白这一点。继续并直接在服务器上生成这个标记(第二种方法)。

关于ViewBag的最后评论:请勿使用它。改用强类型视图模型。

+0

那么,你解释我的例子太字面。所以使用嵌入在JavaScript中的“@ ...”是好的? – sports

相关问题