【发布时间】:2016-08-08 18:10:18
【问题描述】:
在 ASP MVC 控制器中,我创建了一个 ViewBag 变量,其中包含要在我的页面上加载的项目列表:
public ActionResult Items()
{
ViewBag.itemList = Repo.GetItems(); // Returns list of Items
return View("Items");
}
在页面方面,我正在解析这些数据:
@{
Newtonsoft.Json.JsonSerializerSettings jsonSettings = new Newtonsoft.Json.JsonSerializerSettings { ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver() };
var jsonData = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model, Newtonsoft.Json.Formatting.Indented, jsonSettings));
var serial = new System.Web.Script.Serialization.JavaScriptSerializer();
var items = serial.Serialize(ViewBag.itemList);
}
在我的 Knockout 加载函数中,我解析列表并删除破坏 JSON.parse() 函数的换行符。
self.load = function () {
var itemsEscaped = '@Html.Raw(items.Replace("'", "\\'"))'.replace("\n", "\\n");
var someItems = JSON.parse(itemsEscaped);
ko.mapping.fromJS(someItems, self.itemMapping, self.someItems);
}
但是,其他特殊字符偶尔会破坏 JSON.parse() 函数。有没有办法在 JS 端的控制器上过滤掉这些?
【问题讨论】:
-
我确实看到了那个帖子。我确实在那里尝试了解决方案,但遇到了问题。在控制器端这样做不是更好吗?
-
请提供破坏
JSON.parse()的数据示例。 -
以下内容将破坏 Chrome 中的 JSON.parse(): var test = '[{"Description":"0.6g/ml 0.49g/ml USP34\nParticle Size NLT95% Through 80mesh 100%通过 80 目 USP34\n干燥失重 ≤10.0% 5.2% USP34\n符合麸质 ≤20PPM\n载体 50-60%麦芽糊精"}]'.replace("\n", "\\n ");
标签: javascript asp.net json