В контроллере ASP MVC, я создал переменную ViewBag со списком элементов, которые будут загружен на моей странице:Специальные символы в формате JSON ломают JS
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);
}
в моей функции Нокаут нагрузки, я анализирую список и удалить символы новой строки, которые нарушают функцию 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?
проверить http://stackoverflow.com/a/7836439/850825 – jessh
Я видел это сообщение. Я попробовал решение там, но имел проблемы. Не лучше ли было бы сделать это на стороне контроллера? – PaulP
Просьба привести пример данных, которые разбивают 'JSON.parse()'. –