2011-05-11 63 views
0

我想傳遞一個序列化的json對象,並在自定義的Html Helper結果中返回它。像這樣的東西如何將json字符串傳遞給HtmlHelper的結果?

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轉換爲"。我不知道如何保留標記

+1

這就是我用的:JSON.parse('@ Html.Raw(Json.Encode(Model))') – Megacan 2011-11-28 18:27:29

回答

0

我想唯一的解決辦法是與其他一些符號來代替oSerializer.Serialize(爲MyObject))所有的雙引號,這將解析放雙引號後面的HTML標記不衝突,然後才,否則它不會是一個合法的json字符串。

0

是html.Encode答案?

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

你的意思是HttpUtility.HtmlEncode? – Agzam 2011-05-11 20:48:47