ValidateRequest = False但是在行动中它仍然是True而忽略了吗?

时间:2010-04-23 13:00:48

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

我希望在 ASP.NET MVC 2.0 RTM 中的特定视图上禁用 RequestValidation 。所以我添加了一些必要的内容来查看Page指令部分,如下所示:

<%@ Page ValidateRequest="false" Language="C#" MasterPageFile="Path" Inherits="System.Web.Mvc.ViewPage<Path>" %>

RequestValidation 未停用!我还将 RequestValidation属性添加到控制器中的相关操作,如下所示:

[System.Web.Mvc.ValidateInput(false)]
public System.Web.Mvc.ActionResult Create(Model instance)
{
    //Do here something
}

:')但 RequestValidation 也没有禁用!

在上一次尝试中,我在 Web.config 文件中将 RequestValidation 设置为false,如下所示:

<pages validateRequest="false" />

RequestValidation 仍未关闭!

为什么呢?提前谢谢;)

2 个答案:

答案 0 :(得分:13)

如果您使用的是asp.net 4.0,则验证请求功能行为已从2.0版更改。查看breaking changes document here。如果是这种情况,您可以通过将请求验证行为设置回web.config中的2.0来解决问题,如下所示:

<httpRuntime requestValidationMode="2.0" />

答案 1 :(得分:0)

只需添加

[ValidateInput(假)]

在您的控制器功能中 但不要忘记编码值以防止有害代码

    [ValidateInput(false)]
    public string Browse(string test)
    {
        string message = HttpUtility.HtmlEncode("Value = " + test);
        return message;
    }