我有一个 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/