3

我将 Knockout 与 MVC 一起使用,并且我见过的获取用​​于淘汰的视图模型的标准方法是这样的:

var model = '@Html.Raw(Json.Encode(Model))';
var viewModel = ko.mapping.fromJSON(model);

但是,如果我的模型中包含带有特殊字符的字符串属性,例如“\r\n”,我会收到 JSON 解析错误“意外令牌”。

所以我相信我需要转义这些字符,所以它们就像'\\r\\n'。这个怎么做?

我知道我可以针对这种特殊情况执行此操作:

var model = '@Html.Raw(Json.Encode(Model).Replace(@"\", @"\\"))';

但可能还有其他......标签,单引号。

下面是浏览器中实际渲染模型的示例:

var model = '{"Id":4465,"TextContents":["EYE FILLET STEAK\r\nLINE 2 IS HERE"]}';
4

1 回答 1

7

model是一个字符串,而不是 JSON。它在解析 JSON 之前评估转义字符(如果有的话?)为什么需要引号?只需删除它们。

var model = @Html.Raw(Json.Encode(Model));
于 2013-09-05T01:59:10.503 回答