我正在使用将对象转换为 JSON,JavaScriptSerializer
并且可以在服务器代码中看到此 JSON 输出:
[{"UserId":1,"UserName":"Admin"}]
但在 UI 中,它被转换为如下所示的内容
[{"UserId":1,"UserName":"Admin"}].
如何逃脱那些"
?
我正在使用将对象转换为 JSON,JavaScriptSerializer
并且可以在服务器代码中看到此 JSON 输出:
[{"UserId":1,"UserName":"Admin"}]
但在 UI 中,它被转换为如下所示的内容
[{"UserId":1,"UserName":"Admin"}].
如何逃脱那些"
?
如果您使用的是 Razor 视图引擎,则需要使用以下Html.Raw
方法:
<script type="text/javascript">
var model = @Html.Raw(Json.Encode(Model));
</script>
Json.Encode
请注意更短且等效于 的方法的用法new JavaScriptSerializer().Serialize()
。
你为什么这样做?为什么不只返回一个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);
}
关于达林·季米特洛夫的回答还有一件事。在我的 VS2012 中,分号出现编译错误,因为 JS 端的语句实际上是“var model = ;”。一种使用一对引号来包装 Razor 部分的方法,如下所示:
var model = "@Html.Raw(Json.Encode(Model))";
这不会导致任何错误。
Json.Encode() 似乎是 JavaScriptSerializer 的包装函数。我不确定后者是否更省时。