Я пытаюсь передать структуру объекта в свой html, связать с href. Проблема становится файловым путем (путь к .exe) не понят из-за «\».KnockoutJS mapping.fromJSON борется с обратными косыми чертами (значениями пути к файлу)
пример ниже:
var categories = ko.mapping.fromJSON('[{"Applications":[{"Documentation":null,"ApplicationId":2,"Name":"PSSE","Description":"Model software","LocalExePath":"aecies://runApp?C:\Program Files (x86)\MyApp\app.exe"}],"Name":"foobar"}]');
Извините, если я испортил некоторый синтаксис, я принимал гораздо больший объект JSON и сжатие для примера, возможно, пропустил скобку где-нибудь. В любом случае, что выйдет в категориях для ExePath, в приведенном выше случае, это строка с удалением '\. Если я заставляю его «\\» для каждого «\», он терпит неудачу, говоря, что не понимает идентификатор P (явно нарушение в C: \ Program).
Ответ Мартина, кажется, является тем, что я хочу, но то, что я поставил в вопрос, было то, что мне нужно для JSON. Проблема в том, что мой код на самом деле не похож. Вот что выплевывается из @ Html.Raw(). Ниже я добавил свой фактический код. Проблема в том, что я не могу просто добавить другую, заменив все \ на четыре, потому что она добавляет \ к каждому заголовку JSON. (В конце концов выглядит как [{\\\\ «Applications») \\\\
var categories = ko.mapping.fromJSON(
'@Html.Raw(JsonConvert.SerializeObject(Model.Categories,
Formatting.None,
new JsonSerializerSettings { StringEscapeHandling = StringEscapeHandling.EscapeHtml, ReferenceLoopHandling = ReferenceLoopHandling.Ignore}
).Replace("\\u0022", "\\\"").Replace("\"", "\\\""))');
Два возможного исправления я использовал это String.Replace в контроллере для форматирования данных там. Или иметь две слэши для каждой записи в моей базе данных. После того, как он проходит сериализацию и Html.Raw, он заканчивается правильной 4-мя суммами, если в базе данных 2. Есть ли третий вариант, который позволил бы мне сохранить фактическую строку пути (без дополнительной косой черты, C: \ HelloDir \) в базе данных, но добавьте строку в мой код Razor, чтобы заменить косые черты, которые меня волнуют.
Редактировать: stackoverflow не понравилось, что я делаю двойные слэши, что идеально, потому что есть большая часть моей проблемы с отображением.
Edit2: Существует еще вопрос