Как я могу передать строку JSON в результат HtmlHelper? - PullRequest
0 голосов
/ 11 мая 2011

Я хочу передать сериализованный объект 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("\"","&quot;")

Не помогаетБраузер автоматически преобразует &quot; s в ".Я не знаю, как сохранить разметку

Ответы [ 2 ]

0 голосов
/ 16 мая 2011

Полагаю, единственным решением было бы заменить все двойные кавычки в oSerializer.Serialize (MyObject)) каким-либо другим символом, который не конфликтовал бы в разметке html, а затем перед синтаксическим анализом вернуть двойные кавычки, в противном случае не будет законной строкой JSON.

0 голосов
/ 12 мая 2011

html. Кодировать ответ?

return new HtmlString(Html.Encode(str)); 
...