ASP.NET MVC 3 ValidateRequest(false) не работает с FormCollection

К вашему сведению, я использую.NET 4.0 / MVC 3.

В моем контроллере следующий код:

[HttpPost]
[ValidateInput(false)]
public ViewResult Edit(ContentTemplateView contentTemplateView, FormCollection collection)

Когда я не ввожу HTML, все работает нормально, поэтому я знаю, что запускается соответствующий контроллер. Кроме того, в моих файлах web.config правильно установлены следующие параметры:

<httpRuntime requestValidationMode="2.0"/>

Я получаю эту проблему, только когда я включаю FormCollection (который необходим для этого конкретного контроллера). Так что именно я делаю не так?

[Я сделал то, что было предложено по следующим вопросам, и они работают до тех пор, пока нет FormCollection. Никто из них не предлагает решение с включенной FormCollection]

3 ответа

Решение

Я думаю, что я решил свою собственную загадку, с помощью этого форума: http://forums.asp.net/p/1621677/4163625.aspx

Я просто изменил свой контроллер, чтобы он не принимал контроллер, и вместо этого извлек неподтвержденную коллекцию форм из запроса [с помощью System.Web.Helpers].

using System.Web.Helpers;

[HttpPost]
[ValidateInput(false)]
public ViewResult Edit(ContentTemplateView contentTemplateView)
{
    FormCollection collection = new FormCollection(Request.Unvalidated.Form);

Я только что установил ASP.NET MVC 3 RC2, и эта ошибка была исправлена. Следующий код работает как ожидалось сейчас.

[HttpPost]
[ValidateInput(false)]
public ViewResult Edit(FormCollection form)
{
}

Если вы используете привязки пользовательских моделей и [ValidateInput(false)] не работает, вы можете найти решение здесь: http://blogs.taiga.nl/martijn/2011/09/29/custom-model-binders-and-request-validation/

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