我有一个 ASP.NET MVC 4 应用程序。这个应用程序在页脚中有一个带有 javascript 块的 View 。我正在使用 RAZOR View 引擎。我想弄清楚如何将我的结果集转换为 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 - 通过 MVC 和 RAZOR 编写 JSON,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15281647/

10-12 12:34
查看更多