我的ASP.NET頁面包含「ValidateRequest = true」。但是,頁面中有一個我不希望ASP.NET驗證的文本框。有沒有辦法讓這個控件失效?如果不存在,是否有辦法忽略「潛在威脅」錯誤,假設它來自該特定控制?每個控件的ValidateRequest
感謝
我的ASP.NET頁面包含「ValidateRequest = true」。但是,頁面中有一個我不希望ASP.NET驗證的文本框。有沒有辦法讓這個控件失效?如果不存在,是否有辦法忽略「潛在威脅」錯誤,假設它來自該特定控制?每個控件的ValidateRequest
感謝
我知道只有這樣,才能做到這一點會調用HttpRequest類的ValidateString。不幸的是,它是私人的,所以你必須用反思去做。
我還沒有測試過 - 它與我使用的代碼不完全相同。它是根據我幾年前寫的代碼改編的,所以也許微軟有一些新的東西可以讓它更容易。
MethodInfo _validateMethodInfo = typeof(HttpRequest).GetMethod("ValidateString", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.InvokeMethod);
foreach (string key in Request.Form.AllKeys) {
if (key = "< skipped field name >") {
continue;
}
object[] parameters = { Request.Form[key], key, "Request.Form" };
_validateMethodInfo.Invoke(Request, parameters);
}
看看my question。顯然,.NET 4.5現在支持從頁面請求驗證中排除控件。
http://msdn.microsoft.com/en-us/library/system.web.ui.control.validaterequestmode.aspx
爲什麼要允許任何輸入控件的暗中輸入? – IrishChieftain 2010-01-16 19:18:18
這部分與我的其他帖子有關: http://stackoverflow.com/questions/2045188/is-password-input-sanitization-required 隨着密碼被哈希,我不必擔心那個特定的輸入,因爲它從不顯示也不存儲在數據庫中。但是,我希望ASP.NET能夠覆蓋其他輸入。 – XSL 2010-01-16 19:26:30