ValidateRequest для каждого элемента управления

Моя страница ASP.NET содержит "ValidateRequest = true". Однако на странице есть одно текстовое поле, для которого я не хочу проверять ASP.NET. Есть ли способ сделать это ложным для этого одного элемента управления? Если нет, есть ли способ игнорировать ошибку "Потенциальная угроза", предполагая, что она исходит от этого конкретного элемента управления?

Спасибо

2 ответа

Решение

Единственный известный мне способ сделать это - вызвать ValidateString класса HttpRequest. К сожалению, это личное, так что вы должны сделать это с отражением.

Я не проверял это - это не совсем тот код, который я использую. он адаптирован из кода, который я написал несколько лет назад, поэтому, возможно, у Microsoft есть что-то новое, что облегчит это.

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

Другие вопросы по тегам