ASP.NET MVC 3 ValidateRequest (false) не работает с FormCollection - PullRequest
18 голосов
/ 06 декабря 2010

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]

Ответы [ 3 ]

21 голосов
/ 06 декабря 2010

Мне кажется, я решил свою собственную загадку с помощью этого форума: 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);
7 голосов
/ 20 декабря 2010

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

[HttpPost]
[ValidateInput(false)]
public ViewResult Edit(FormCollection form)
{
}
0 голосов
/ 23 января 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...