#json #asp.net-mvc-3 #javascriptserializer
#json #asp.net-mvc-3 #javascriptserializer
Вопрос:
Я хочу передать сериализованный объект json и вернуть его в результате пользовательского помощника Html. Что-то вроде этого
public static HtmlString SomeHelper(this HTMLHelper htmlHelper)
{
var MyObject = new Foo();
var oSerializer = new JavaScriptSerializer();
var str = string.Format(@"<a href""#""
onclick=""var myObject = $.parseJSON(0);
alert('my object name property ' myObject.Name); ""> Click me</a>",
oSerializer.Serialize(MyObject));
return new HtmlString(str);
}
Эта вещь теоретически должна работать, но это не так. Он помещает сериализованную строку в разметку, а затем все становится беспорядочным из-за двойных и одинарных кавычек. Я пытался применить HtmlString после сериализации, я даже пытался использовать HtmlString.ToHtmlString(). Ничего не работает.
На самом деле я, вероятно, не должен этого делать. Вызов события click следует использовать незаметно. Я знаю. Тогда мне все равно придется сохранить объект json где-нибудь в результирующей разметке.
Upd: Я даже пытался это сделать:
sJson.replace(""","amp;quot;")
Не помогает. Браузер автоматически преобразует amp;quot;
s в "
. Я не знаю, как сохранить разметку
Комментарии:
1. Это то, что я использовал: JSON.parse(‘@Html.Raw(Json. Кодирование (модель))’)
Ответ №1:
Это html.Закодировать ответ?
return new HtmlString(Html.Encode(str));
Ответ №2:
Я думаю, единственным решением было бы заменить все двойные кавычки в oSerializer.Сериализуйте (MyObject)) каким-либо другим символом, который не конфликтовал бы с html-разметкой, а затем перед синтаксическим анализом заключите двойные кавычки обратно, иначе это не была бы законная строка json.