我无法关闭ASP.NET MVC控制器的请求验证

Ron*_*rby 10 .net c# asp.net asp.net-mvc request-validation

我试图通过执行以下操作关闭控制器中所有操作方法的请求验证:

[ValidateInput(false)]
public class MyController : Controller
{
    ...
Run Code Online (Sandbox Code Playgroud)

我正在使用的参考说这是可能的,并告诉我这样做,但由于某种原因,它不起作用.

如果我通过文本框提交任何html(甚至是简单的<b>标签),我会收到错误消息:

从客户端检测到一个潜在危险的Request.Form值(text = <b>").

通过将属性附加到单个方法也无法正常工作.

如何禁用控制器的请求验证?

编辑

我在VS2008内置测试服务器.

Rob*_*vey 15

我在我的机器上测试了它,在类定义和动作方法上,它在两种情况下都适用于我.您确定您的视图与您的方法/控制器对齐吗?您是将该属性放在GET方法还是POST方法上?

[AcceptVerbs(HttpVerbs.Post)]
[ValidateInput(false)]   
public ActionResult MyAction (int id, string content) {   
    // ...   
}
Run Code Online (Sandbox Code Playgroud)

  • 对不起,罗尼.它适用于我的机器,无论我将属性放在方法还是类上. (2认同)

the*_*ric 13

要使其正常工作,您还需要修改web.config:

<system.web>
    <httpRuntime requestValidationMode="2.0"/>
    ...
</system.web>
Run Code Online (Sandbox Code Playgroud)