我正在使用ASP.NET MVC,我試圖生成一段JavaScript作爲視圖呈現的一部分。我有一個模型,公開一個簡單類型的數組,我想在視圖中生成一個javascript/json等效數組,以便我可以使用jQuery對其執行操作。因此,考慮以下模型:生成原始json數組到視圖在ASP.NET MVC
public class Info {
public string Name {get;set;}
public int ID {get; set;}
}
public class InfoModel{
public Info[] InfoList {get;set;}
}
...我想生成一個JavaScript數組看起來像這樣:
var infoList = [
{
Name = "...",
ID = 1
} ,
{
Name = "...",
ID = 2
},
....
{
Name = "...",
ID = N
}];
是否有一個很好的和簡潔的方式在視圖中要做到這一點,我如果我嘗試讓模型生成json表示形式,似乎遇到了引號編碼的問題,所以目前我只能使用一些意大利麪/經典asp代碼生成它,我寧願用一個很好的單行代碼來代替它。
編輯:請注意,我沒有找一個控制器返回一個JsonResult,我想我的視圖的方式包含一個JavaScript數組,從我的模型在一行代碼中生成(如果可能的話)
編輯: 我得到了一部分的方式,但似乎與編碼掙扎。此代碼視圖:
<script>
var list = <%: HtmlExtension.ToJson(Model.InfoList) %>;
</script>
(其中的toJSON封裝轉換爲使用JavaScriptSerializer字符串)輸出一些編碼錯誤:
var info = [{"Name":"Low End","ID":1}];
..這不是我所期待的。我能做到這一點:
var info = <% Response.Write(HtmlExtension.ToJson(Model.InfoList)); %>;
它的工作,但不看起來像閃亮。我應該顯式地忽略編碼,如圖所示(輸出是理智的,不是用戶生成的,所以它可能不是問題),還是我缺少其他東西,使其不那麼經典的ASP?
是的!謝謝喬納森,MvcHtmlString是我正在等待的魔法... – 2010-11-03 12:58:25
我能夠在我的剃刀HTML文件中使用這行代碼: MvcHtmlString.Create(Json.Encode(Model)) – bkwdesign 2013-10-11 19:06:24
沒錯。最後它是'MvcHtmlString'是它的關鍵。 – 2013-10-14 16:14:55