0

シリアル化された 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() も使用しようとしました。何も機能しません。

実際、私はおそらくそれをすべきではありません。クリック イベントの呼び出しは控えめに使用する必要があります。知っている。次に、結果のマークアップのどこかに json オブジェクトを保存する必要があります。

Upd:私もそれをやろうとしました:

sJson.replace("\"","&quot;")

役に立たない。ブラウザは自動的に&quot;s を に変換し"ます。マークアップを保存する方法がわかりません

4

2 に答える 2

0

唯一の解決策は、oSerializer.Serialize(MyObject)) のすべての二重引用符を、html マークアップで競合しない他のシンボルに置き換えてから、解析前に二重引用符を元に戻すことだと思います。正当な json 文字列。

于 2011-05-16T14:23:43.173 に答える