30

我正在使用将对象转换为 JSON,JavaScriptSerializer并且可以在服务器代码中看到此 JSON 输出:

[{"UserId":1,"UserName":"Admin"}]

但在 UI 中,它被转换为如下所示的内容

[{"UserId":1,"UserName":"Admin"}].

如何逃脱那些"

4

3 回答 3

69

如果您使用的是 Razor 视图引擎,则需要使用以下Html.Raw方法:

<script type="text/javascript">
    var model = @Html.Raw(Json.Encode(Model));
</script>

Json.Encode请注意更短且等效于 的方法的用法new JavaScriptSerializer().Serialize()

于 2012-10-10T14:23:32.280 回答
22

你为什么这样做?为什么不只返回一个JsonResult

public ActionResult MyMethod()
{
    List<ListItem> list = new List<ListItem>() {
        new ListItem() { UserId = "1", UserName = "Admin" },
        new ListItem() { UserId = "2", UserName = "JohnDoe" },
        new ListItem() { UserId = "3", UserName = "JaneDoe" }};

    return this.Json(list);
}
于 2012-10-10T14:00:41.067 回答
0

关于达林·季米特洛夫的回答还有一件事。在我的 VS2012 中,分号出现编译错误,因为 JS 端的语句实际上是“var model = ;”。一种使用一对引号来包装 Razor 部分的方法,如下所示:

var model = "@Html.Raw(Json.Encode(Model))";

这不会导致任何错误。

Json.Encode() 似乎是 JavaScriptSerializer 的包装函数。我不确定后者是否更省时。

于 2013-07-01T23:44:45.587 回答