【问题标题】:Call ASP.NET's input validation after using ValidateInput(false)使用 ValidateInput(false) 后调用 ASP.NET 的输入验证
【发布时间】:2012-03-29 18:22:49
【问题描述】:

当我在表单的输入字段中敲击特殊字符时,当我点击提交时,我得到的只是一个空白页面,因为 ASP.NET 检测到潜在的恶意输入并在我的事件日志中抛出了一个错误,在到达我的 MVC 控制器操作之前。

我更愿意向用户返回一个错误,这样他们就不会只是得到一个空白页。所以我想使用 ValidateInput(false) 然后从我的代码中调用验证器,这样我就可以发送一个响应。如何从 ASP.NET MVC 操作中调用验证器?

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    我对您的问题有点困惑。您是否正在寻找调用执行模型验证的代码?如果是,您可以通过检查 ModelState.IsValid 属性来做到这一点。如果您的任何验证失败,它将返回 false 并且在您的视图中您将看到错误消息。如果您想这样做,您也可以从您的操作方法中指定一些自定义错误消息。

    [HttpPost]
    public ActionResult LogOn(LogOnModel model, string returnUrl)
    {
        if (ModelState.IsValid)
        {
          //Model validation is successful. Proceed to other stuff
    
          //If you want to return some custom error message, do like this
          ModelState.AddModelError("", "The user name is deactivated");
    
        }
     return View(model);
    }
    

    【讨论】:

      【解决方案2】:

      您想在服务器端验证输入吗?

      您可以使用客户端验证,您需要在模型属性上添加正则表达式属性并为其设置一个很好的错误消息。如下所示

      [RegularExpression("your regex", ErrorMessage = @"please check your input .... ")]
      public string MyInput { get; set; }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-27
        • 2011-04-06
        • 2020-08-24
        • 2011-06-13
        • 1970-01-01
        • 1970-01-01
        • 2011-06-23
        • 2010-09-14
        相关资源
        最近更新 更多