使用ValidateInput后调用ASP.NET的输入验证(false)

时间:2012-03-29 18:22:49

标签: asp.net-mvc

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

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

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

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

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

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