ValidateRequest =“false”无效

时间:2012-05-22 09:18:47

标签: c# asp.net-mvc-3 validation

我需要发送html。我收到错误(这台机器transalate):

  

检测到来自的Request.Form的潜在危险值   客户端(Description =" eqqdaqd asda      

描述:可能发现验证请求的过程   危险客户端输入值,查询处理中断。   此值可能表示试图破坏安全性   应用程序,例如跨站点脚本攻击"。允许   页面覆盖默认扫描请求应用程序,请参阅httpRuntime   配置属性以设置requestValidationMode   requestValidationMode =" 2.0"。示例:。设置此值后,即可   通过设置validateRequest =" false"来禁用请求验证在里面   页面指​​令或配置部分。但是,在这   在应用程序中强烈要求明确检查所有条目。   有关更多信息,请参阅   http://go.microsoft.com/fwlink/?LinkId=153133

 public ActionResult Create()
        {
            this.ValidateRequest = false;
            return View();
        }

        //
        // POST: /Admin/News/Create

        [HttpPost]
        public ActionResult Create(NewsView model)
        {
            this.ValidateRequest = false;
            try
            {
               //logic

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

此控制器位于竞技场管理员中。我在web.config中设置

<system.web>
    <httpRuntime requestValidationMode="2.0" />

2 个答案:

答案 0 :(得分:4)

您可以使用ValidateInput属性修饰控制器操作:

[HttpPost]
[ValidateInput(false)]
public ActionResult Create(NewsView model)
{
    ...
}

在您的示例中,您正在POST控制器操作中设置属性,但这太晚了,因为在调用操作之前执行了验证。或者,如果您只想对视图模型上的给定属性禁用验证,则可以使用AllowHtml属性对其进行修饰:

[AllowHtml]
public string Description { get; set; }

现在,您不再需要使用ValidateInput属性修饰控制器操作。

答案 1 :(得分:0)

您可以尝试使用AllowHtmlAttribute 或者,如果您要使用ValidateRequest,还应设置requestValidationMode = "2.0"