ASP.NET MVC 3 ValidateRequest(false)不使用FormCollection

时间:2010-12-05 23:16:00

标签: asp.net asp.net-mvc-3

仅供参考我使用的是.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 个答案:

答案 0 :(得分:21)

在这个论坛的帮助下,我想我已经解决了自己的谜题:http://forums.asp.net/p/1621677/4163625.aspx

我刚修改了我的Controller,因此它不接受Controller,而是从Request [借助System.Web.Helpers]抓取未经验证的表单集合。

using System.Web.Helpers;

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

答案 1 :(得分:7)

我刚安装了ASP.NET MVC 3 RC2,这个bug已经修复。以下代码现在按预期工作。

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

答案 2 :(得分:0)

如果您使用自定义模型绑定器并且 [ValidateInput(false)] 不起作用,那么您可以在此处找到解决方案:http://blogs.taiga.nl/martijn/2011/09/29/custom-model-binders-and-request-validation/