我无法关闭ASP.NET MVC控制器的请求validation
我试图通过执行以下操作关闭控制器中所有操作方法的请求validation:
[ValidateInput(false)] public class MyController : Controller { ...
我正在使用的参考说这是可能的,并告诉我这样做,但由于某种原因,它不起作用。
如果我通过文本框提交任何html(甚至是简单的标签),我会收到错误消息:
从客户端检测到潜在危险的Request.Form值(text = “)。
通过将属性附加到单个方法也无法正常工作。
如何禁用控制器的请求validation?
编辑
我在VS2008内置测试服务器。
我在我的机器上测试了它,在类定义和动作方法上,在两种情况下它都适用于我。 您确定您的视图与您的方法/控制器对齐吗? 您是将该属性放在GET方法还是POST方法上?
[AcceptVerbs(HttpVerbs.Post)] [ValidateInput(false)] public ActionResult MyAction (int id, string content) { // ... }
要使其正常工作,您还需要修改web.config:
...
Pro ASP.NET MVC框架(p466)说以下应该有效:
public class MyController : Controller { public MyController() { ValidateRequest = false; } }
你可以发布你的控制器文件和你的视图文件。
这有效;
MytestController ——————————–
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Mvc.Ajax; namespace testapp.Controllers { [ValidateInput(false)] public class MyTestController : Controller { public ActionResult Index() { return View(); } } }
MyTest的(指数)———————————————- ———
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %> Index <% using (Html.BeginForm()) { %> <%= Html.TextBox("test")%> <%} %>