2011-01-16 28 views
1


我有一個模型類定義了3個屬性,我想從視圖上的JavaScript代碼訪問此模型。在第一次使用Asp.Net MVC的時候在這裏寫出模型作爲Javascript中的對象

我發現最好的是this page 這將讓我做這樣的事情:因爲這個代碼是基於文章從2007年,我在想,如果有更好的方法來做到這一點

<script> 
var model = <%= Model.ToJson() %> 
alert(model.Prop1); 
</script> 

謝謝!

+0

我懷疑,如果有這種方法有什麼嚴重錯誤,那麼你會發現很多其他的選擇。我認爲現實是,大多數人沒有發現需要將整個模型推向客戶端javascript,我不確定我能否想到我希望這樣做的原因是誠實的。這裏有什麼推動你的調查,瞭解你的目標會很有趣。 – Lazarus

+0

我的頁面的數據將定期用json的定時請求更新,但我認爲我可以通過將JSON直接作爲頁面上的var來呈現JavaScript的初始數據,這樣就不需要等待AJAX​​回調開始填充頁面。 – pauloya

回答

2

是的,這是一個很好的方法來實現這一點。它使用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); 
}); 
+1

downvote的任何理由? downvoting時請留言。 –

+0

我沒有downvote,但afaik JavascriptSerializer被depricated,你應該使用DataContractSerializer,而不是...我不是一個C#大師tho –

+0

@Martin,JavaScriptSerializer不被棄用。我不知道你讀的是哪裏。剛剛發佈的ASP.NET MVC 3框架使用它來生成JSON。實際上,它在.NET 3.5中暫時不推薦使用,並且在.NET 3.5 SP1中未定義。它的使用非常好。 –

相關問題