2012-09-17 153 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

相關問題