2011-06-02 52 views
0

我有一個看起來像這樣一個ASP .NET頁面上的HTML元素:什麼是在HTML元素上編碼onClick屬性值的正確方法?

<input type="button" onclick="<%=GetOnClick(param1) %>" /> 

的GetOnClick功能如下:

Function GetOnClick(param1 As String) As String 

    Dim onClick As String 

    onClick = "foo(" & JavaScriptEncode(param1) & ");" 

    Return HtmlAttributeEncode(onClick) 

End Function 

我想我需要JavaScriptEncode(作爲字符串 - 此方法添加單引號)param1變量,然後HtmlAttributeEncode整個事情,因爲我將它設置onClick屬性。我相信我可以避免在90%的情況下沒有完全編碼,但這是最佳做法嗎?

編輯:

布賴恩提出了一個很好的點。如果你可以控制字符串param1包含,你不需要編碼它。但是,在這種情況下,它是用戶輸入,所以我需要非常小心。

回答

0

答案取決於一些我們不知道的事情...... param1從哪裏來? foo()期待什麼?

如果您正在控制後端包含的param1,您甚至不需要JavaScriptEncode。如果它源自某些用戶輸入,那麼當然你需要清理它或對它進行編碼。但是你不需要編碼兩次。

+0

它是用戶輸入。我編輯了這個問題來反映這個變化。 – 2011-07-19 13:00:53

相關問題