我正在使用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"]}';
答案 0 :(得分:7)
您的model
是字符串,而不是JSON。它在解析JSON之前评估转义字符(如果有的话?)
你为什么需要报价?只需删除它们。
var model = @Html.Raw(Json.Encode(Model));