MVC Foolproof Validation RequiredIfFalse错误地返回错误

时间:2014-10-10 14:10:47

标签: c# asp.net-mvc foolproof-validation

我正在使用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); 
}

1 个答案:

答案 0 :(得分:2)

哦,呃。您的字段是值类型。

始终需要值类型。如果您希望它是可选的,您需要使类型为可空。

请注意,错误消息与验证程序中使用的错误消息不同,这是第一个线索。