Отключение валидации данных HTTP-запроса в ASP.NET WebForms и ASP.NET MVC

25.10.2009 16:35 / Артём Волк / 2220 просмотров / ...

По умолчанию все данные HTTP-запроса подвергаются проверке на наличие потенциально небезопасных данных (клиентских скриптов, HTML-разметки и т.п.), в случае обнаружения подобных данных выбрасывается исключение, например такого вида:

A potentially dangerous Request.QueryString value was detected from the client....

или

A potentially dangerous Request.Form value was detected from the client....

В случае использования WYSIWYG редактора для редактирования контента эту возможность необходимо отключить. Сделать это можно на уровне страницы:

<%@ Page validateRequest="false" %>

Или для всего приложения в Web.config:

<system.web>  
	<pages validateRequest="false" />  
</system.web>

Но... оба эти способа не работают для ASP.NET MVC. Для MVC нужно использовать атрибут [ValidateInput] на уровне класса контроллера или метода-экшена, например, так:

[AcceptVerbs(HttpVerbs.Post)]
[ValidateInput(false)]  
public ActionResult Add(SomeEntity entity)
{
	...
}