。
我有一個模型類定義了3個屬性,我想從視圖上的JavaScript代碼訪問此模型。在第一次使用Asp.Net MVC的時候在這裏寫出模型作爲Javascript中的對象
我發現最好的是this page 這將讓我做這樣的事情:因爲這個代碼是基於文章從2007年,我在想,如果有更好的方法來做到這一點
<script>
var model = <%= Model.ToJson() %>
alert(model.Prop1);
</script>
。
謝謝!
。
我有一個模型類定義了3個屬性,我想從視圖上的JavaScript代碼訪問此模型。在第一次使用Asp.Net MVC的時候在這裏寫出模型作爲Javascript中的對象
我發現最好的是this page 這將讓我做這樣的事情:因爲這個代碼是基於文章從2007年,我在想,如果有更好的方法來做到這一點
<script>
var model = <%= Model.ToJson() %>
alert(model.Prop1);
</script>
。
謝謝!
是的,這是一個很好的方法來實現這一點。它使用JavaScriptSerializer
將您的模型序列化爲JSON對象並確保正確轉義。
作爲一種選擇,如果你正在使用AJAX,你可以直接有一個控制器動作返回JSON:
public ActionResult Foo()
{
var model = FetchTheModel();
return Json(model, JsonRequestBehavior.AllowGet);
}
,然後使用jquery消耗這個動作:
$.getJSON('<%= Html.Action("Foo") %>', function(result) {
alert(result.Prop1);
});
downvote的任何理由? downvoting時請留言。 –
我沒有downvote,但afaik JavascriptSerializer被depricated,你應該使用DataContractSerializer,而不是...我不是一個C#大師tho –
@Martin,JavaScriptSerializer不被棄用。我不知道你讀的是哪裏。剛剛發佈的ASP.NET MVC 3框架使用它來生成JSON。實際上,它在.NET 3.5中暫時不推薦使用,並且在.NET 3.5 SP1中未定義。它的使用非常好。 –
我懷疑,如果有這種方法有什麼嚴重錯誤,那麼你會發現很多其他的選擇。我認爲現實是,大多數人沒有發現需要將整個模型推向客戶端javascript,我不確定我能否想到我希望這樣做的原因是誠實的。這裏有什麼推動你的調查,瞭解你的目標會很有趣。 – Lazarus
我的頁面的數據將定期用json的定時請求更新,但我認爲我可以通過將JSON直接作爲頁面上的var來呈現JavaScript的初始數據,這樣就不需要等待AJAX回調開始填充頁面。 – pauloya