2011-02-15 51 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])而不是純文本。在這種情況下,值不應該被編碼。