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/