ASP.NET MVC 3 ValidateRequest (false) не работает с FormCollection
FYI Я использую .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]
Ответы
Ответ 1
Думаю, я решил свою собственную загадку с помощью этого форума: 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);
Ответ 2
Я только что установил ASP.NET MVC 3 RC2, и эта ошибка исправлена. Следующий код работает как ожидается.
[HttpPost]
[ValidateInput(false)]
public ViewResult Edit(FormCollection form)
{
}
Ответ 3
Если вы используете пользовательские привязки моделей и [ValidateInput (false)] не работает, вы можете найти решение здесь: http://blogs.taiga.nl/martijn/2011/09/29/custom-model-binders-and-request-validation/