javascript – 通过MVC和RAZOR编写JSON

我有一个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()方法调用什么,但你可以稍微修改我的代码并在任何地方插入方法调用这需要.

上一篇:通过JavaScript中的IEnumerable模型进行迭代


下一篇:c# – 使用ASP.NET MVC在View的EditorFor()方法中显示ViewBag的值