Подтвердить что ты не робот

ValidateRequest = "false" для одного элемента управления

Я хочу разрешить пользователям вводить HTML только в одном текстовом поле. Я понимаю, что можно изменить ValidateRequest в директиве страницы на false, чтобы удалить защиту.

Я предполагаю, что это позволяет вводить HTML в любом текстовом поле на странице. Есть ли способ применить ValidateRequest="false" только к одному элементу управления?

Спасибо за любую помощь.

4b9b3361

Ответ 1

Нет, проверка запроса выполняется для всего запроса или ничего.

Валидация была добавлена ​​по умолчанию для защиты разработчиков, которые не знают о проверке ввода. Если вы знаете, что все входные данные должны рассматриваться как небезопасные и знать, как правильно кодировать данные, которые вы используете из ввода, чтобы защитить себя от таких вещей, как SQL-инъекция и межсайтовый скриптинг, вы можете отключить проверку.

Edit:

Обновление: в .NET 4.5 добавлено свойство ValidateRequestMode, которое позволяет исключить элементы управления из глобальной проверки страницы.

Ответ 2

Новое в .NET 4.5: Вы можете установить ValidateRequestMode="Disabled" на элемент управления. См. MSDN.

Ответ 3

Попробуйте отключить функцию ValidateRequest и используйте этот метод для удаления разметки из каждого отдельного элемента управления/параметра:

public static string RemoveMarkUp(this string s) {
   return Regex.Replace(s, @"<[a-zA-Z\/][^>]*>", string.Empty);
}