0

我想传递一个序列化的 json 对象并在自定义 Html Helper 的结果中返回它。像这样的东西

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 对象保存在生成​​的标记中的某处。

更新:我什至尝试这样做:

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

没有帮助。浏览器自动将&quot;s 转换为". 我不知道如何保留标记

4

2 回答 2

0

html.Encode 是答案吗?

return new HtmlString(Html.Encode(str)); 
于 2011-05-11T20:25:27.097 回答
0

我想唯一的解决方案是用其他符号替换 oSerializer.Serialize(MyObject)) 中的所有双引号,这不会在 html 标记中发生冲突,然后在解析之前放回双引号,否则不会一个合法的 json 字符串。

于 2011-05-16T14:23:43.173 回答