是否可以更改Attribute.Add格式添加属性的方式?

时间:2014-02-14 19:33:22

标签: c# asp.net json

我的问题:是否可以更改Attribute.Add格式添加属性的方式?

我有一个ASP.net网站,它在div中加载一个小部件,我正试图找到一种方法,用我的代码隐藏将数据选项属性添加到div。我需要使用data-options值周围的单引号创建属性,而不是双引号,因为我分配的值是JSON对。

我需要的属性如下: 数据选项=“{‘post_message_origin’:” https://www.mysite.com/MyWidget.aspx”}”

使用Attribute.Add(“data-options”)时的样子: 我的代码:

string dataoptions = "{\"post_message_origin\":\""+ HttpContext.Current.Request.Url.AbsoluteUri + "\"}";
MYWIDGET.Attributes.Add("data-options", dataoptions);

属性结果: 数据的选项=“{‘post_message_origin’:” https://www.mysite.com/MyWidget.aspx”}”

包含data-options值的双引号集阻止JSON对被正确读取,因此我的问题。

我正在尽力避免使用硬编码,这样我就可以轻松地将页面从开发服务器加载到生产服务器而无需更改代码,这就是我使用HttpContext.Current.Request.Url.AbsoluteUri的原因。后面的代码而不是直接将数据选项值写入ASP标记中的div。

2 个答案:

答案 0 :(得分:1)

在这种情况下,我建议使用带有JSON的单引号。两者都是可接受的,只要它们是开 - 闭对。这回避了这个问题。

编辑:不幸的是,Attribute.Add对引号进行编码......

这已经提出before。看起来长期解决方案是实现您自己的编码器......

答案 1 :(得分:0)

我建议您在数据中不包含任何引用:

string dataoptions = "{\"post_message_origin\":\""+ 
    HttpContext.Current.Request.Url.AbsoluteUri + "\"}";
dataoptions = dataoptions.Replace("\"", """).Replace("'", "'");
MYWIDGET.Attributes.Add("data-options", dataoptions);