asp.net-mvc - 无论如何让mvc框架验证我的 Action 参数,就像ModelState.IsValid

标签 asp.net-mvc

我有一个 Action ,想对参数做一些简单的检查

ActionResult Test([Range(0,10)] int i)
{
  // ModelState.IsValid is always true, i want it to be false if i > 10 or i < 0
}

无论如何要解决这个问题或解决它或MVC提供的任何替代方案?

最佳答案

我想在给你一些替代选项之前只检查数据注释属性定义。我惊讶地看到 AttributeUsage被定义为这样你也可以应用到方法参数,不幸的是它没有像我自己尝试的那样工作。虽然我不确定他们为什么允许这个参数作为方法参数(我认为它有效但不起作用)

关于替代选项,你可以试试这个,

public ActionResult Test(int i)
{
   var rangeAttr = new RangeAttribute(0, 10);

   if(!rangeAttr.IsValid(i))
     ModelState.AddModelError(i.ToString(), rangeAttr.FormatErrorMessage("i"));       
}

关于asp.net-mvc - 无论如何让mvc框架验证我的 Action 参数,就像ModelState.IsValid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10978049/

相关文章:

javascript - 使用jquery提交时如何将数组添加到表单?

c# - ASP.NET - 当前上下文中不存在名称 'Context'

c# - 我无法从 Controller 中的表单接收发布数据

asp.net-mvc - 在 Asp.Net MVC 网站中维护状态

c# - ASP.net MVC - 在模型中处理 HTML 数据

javascript - 动态更改应用程序中不同模块的java脚本和css文件

c# - ASP.NET MVC 成员(member)提供者

asp.net-mvc - AngularJS 找不到 XSRF-TOKEN cookie

c# - ASP.NET MVC 是无状态的吗?

c# - 搭建脚手架时如何指定在 View 中使用哪个外键列