我正在使用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