我有一个ASP.NET MVC 4应用程序.这个应用程序有一个视图与页脚中的javascript块.我正在使用RAZOR视图引擎.我试图弄清楚如何将我的结果集转换为JSON数组.目前,我正在做以下事情:
<script type="text/javascript">
@for (int i=0; i<ViewBag.States.Count; i++) {
<text>
{ id: @Html.Raw(ViewBag.States[i]["ID"], name: \"" + ViewBag.States[i]["Name"] + "\"}")
</text>
if (i < (ViewBag.States.Count - 1)) {
<text>,</text>
}
}
</script>
这种方法在语法上似乎很草率.但是,我不知道怎么做.有谁知道我怎么能清理它?通过这种方法,我甚至无法弄清楚如何将“ID”值包装在引号中.
解决方法:
您可以使用JavaScriptSerializer类将集合序列化为JSON:
@{
var serializer = new JavaScriptSerializer();
var serializedData = serializer.Serialize(Enumerable.Select(ViewBag.States, state =>
new {
id = state["ID"],
name = state["Name"]
}));
}
您可以通过以下方式呈现已加强化的数据:
@Html.Raw(serializedData)
你可以解析它的javascript用法,如下所示:
JSON.parse('@Html.Raw(serializedData)');
我认为你的例子中存在某种语法错误,我无法弄清楚你打算使用Html.Raw()方法调用什么,但你可以稍微修改我的代码并在任何地方插入方法调用这需要.