我的 ASP.NET 页面包含“ValidateRequest = true”。但是,页面中有一个文本框,我不希望 ASP.NET 对其进行验证。有没有办法让那个控件变成假的?如果没有,是否有办法忽略“潜在威胁”错误,假设它来自该特定控件?
谢谢
我的 ASP.NET 页面包含“ValidateRequest = true”。但是,页面中有一个文本框,我不希望 ASP.NET 对其进行验证。有没有办法让那个控件变成假的?如果没有,是否有办法忽略“潜在威胁”错误,假设它来自该特定控件?
谢谢
我知道的唯一方法是调用 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);
}
看看我的问题。显然 .NET 4.5 现在支持从页面请求验证中排除控件。
http://msdn.microsoft.com/en-us/library/system.web.ui.control.validaterequestmode.aspx