【发布时间】:2013-09-08 16:55:54
【问题描述】:
我将 Knockout 与 MVC 一起使用,我见过的获取用于淘汰的视图模型的标准方法是这样的:
var model = '@Html.Raw(Json.Encode(Model))';
var viewModel = ko.mapping.fromJSON(model);
但是,如果我的模型中包含特殊字符的字符串属性,例如'\r\n' 我收到 JSON 解析错误 'unexpected token'。
所以我相信我需要转义这些字符,使它们像“\\r\\n”。如何做到这一点?
我知道我可以针对这种特殊情况这样做:
var model = '@Html.Raw(Json.Encode(Model).Replace(@"\", @"\\"))';
但可能还有其他...标签、单引号。
以下是浏览器中实际渲染模型的示例:
var model = '{"Id":4465,"TextContents":["EYE FILLET STEAK\r\nLINE 2 IS HERE"]}';
【问题讨论】:
-
对我来说这看起来像是一个有效的 JSON。为什么它用引号括起来?
-
据我所知,由于 MVC 想要做事的方式。如果我删除引号,它会在 Razor 视图中出现语法错误。
-
粘贴错误。你不应该需要引号。
标签: asp.net-mvc json knockout.js