2011-02-15 70 views
0

我有一个超链接上我的用户我在其中动态设置onlick事件在服务器端是这样的:禁用HTML编码在Asp.net超链接属性

this.Attributes["onclick"] = string.Format("javascript:alert('{0}')", base.NavigateUrl); 

的问题是,当Asp.net呈现它结束了这样的事情

<a href='...' onclick="javascript:alert(&#39;TEST&#39;)>LINK</a> 

这显然是无效的Javascript。使用"而不是'也没有帮助,生成的HTML是alert(&quot;TEST&quot;)

有没有办法解决这个问题?

谢谢。

回答

3

onclick="javascript:alert(&#39;TEST&#39;)"是完全有效的。当页面被解析时,在JavaScript处理值之前,实体应该被替换为它们的对应物。因此,在第1遍中,HTML解析器会将属性值更改为javascript:alert('TEST');,这是有效的JavaScript。

+0

哦thanx,我一直在直接检查HTML – 0xFF 2011-02-15 01:05:00

1

使用Jquery时不起作用。

服务器端:

this.Attributes["onclick"] = "$('#button').click();"; 

客户端:

onclick="$(&amp;#39;#button&amp;#39;).click();" gives an error. 

反正是有只得到 '真正的' 单引号客户端?

0

露友,

不幸的是,微软认为这是一个“安全功能”,他们并不真正在乎的浏览器或JavaScript的兼容性。覆盖它的一种方法是使用Eval([string])而不是纯文本。在这种情况下,值不应该被编码。