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

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

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"));       
}
点赞