2010-01-16 16 views
0

我的ASP.NET頁面包含「ValidateRequest = true」。但是,頁面中有一個我不希望ASP.NET驗證的文本框。有沒有辦法讓這個控件失效?如果不存在,是否有辦法忽略「潛在威脅」錯誤,假設它來自該特定控制?每個控件的ValidateRequest

感謝

+0

爲什麼要允許任何輸入控件的暗中輸入? – IrishChieftain 2010-01-16 19:18:18

+0

這部分與我的其他帖子有關: http://stackoverflow.com/questions/2045188/is-password-input-sanitization-required 隨着密碼被哈希,我不必擔心那個特定的輸入,因爲它從不顯示也不存儲在數據庫中。但是,我希望ASP.NET能夠覆蓋其他輸入。 – XSL 2010-01-16 19:26:30

回答

0

我知道只有這樣,才能做到這一點會調用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); 
} 
相關問題