我正在使用MVC Foolproof Validation库来制定相关要求:
public bool IsRequired { get; set; }
[RequiredIfTrue("IsRequired", ErrorMessage = "This field is required")]
public int RequiredIfTrueSelectID { get; set; }
这在客户端完美运行,允许我提交没有RequiredIfTrueSelectID
值的表单(即值为0),但在[HttpPost]
ModelState.IsValid
返回false,并且在即时窗口中显示以下结果:
myViewModel.IsRequired
true
ModelState["RequiredIfTrueSelectID"].Errors[0]
{System.Web.Mvc.ModelError}
ErrorMessage: "A value is required."
Exception: null
我确保我回发了RequiredIfTrueSelectID的值(正如您在上面的第一个即时窗口查询中看到的那样)。为什么我收到“A value is required”消息,如何抑制此错误?
顺便说一下,我在MVC5。自从2年前Foolproof的最新更新以来,ModelState
的实施可能已经改变了吗?有没有其他人知道最近出版的库,其功能类似于Foolproof?
控制器方法:
[HttpPost]
public virtual ActionResult ValidationTest(TestViewModel vm)
{ //breakpoint here to check ModelState.IsValid
return View(vm);
}
答案 0 :(得分:2)
始终需要值类型。如果您希望它是可选的,您需要使类型为可空。
请注意,错误消息与验证程序中使用的错误消息不同,这是第一个线索。