每个控件的ValidateRequest

时间:2010-01-16 19:12:06

标签: c# asp.net error-handling validate-request

我的ASP.NET页面包含“ValidateRequest = true”。但是,页面中有一个文本框,我不希望ASP.NET验证它。有没有办法让它成为一个控件的错误?如果没有,是否有办法忽略“潜在威胁”错误,假设它来自该特定控件?

由于

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

看看my question。显然,.NET 4.5现在支持从页面请求验证中排除控件。

http://msdn.microsoft.com/en-us/library/system.web.ui.control.validaterequestmode.aspx