1

我正在使用 MVC Foolproof Validation 库来提出相关要求:

public bool IsRequired { get; set; }
[RequiredIfTrue("IsRequired", ErrorMessage = "This field is required")]
public int RequiredIfTrueSelectID { get; set; }

这在客户端完美地工作,允许我提交没有RequiredIfTrueSelectID值的表单(即值为 0),但[HttpPost]返回ModelState.IsValidfalse,并在即时窗口中显示以下结果:

myViewModel.IsRequired 
   true
ModelState["RequiredIfTrueSelectID"].Errors[0]
  {System.Web.Mvc.ModelError}
    ErrorMessage: "A value is required."
    Exception: null

我确保我正在回发RequiredIfTrueSelectID 的值(如您在上面的第一个即时窗口查询中所见)。为什么我会收到“需要 A 值”消息,如何抑制此错误?

顺便说一句,我在 MVC5 中。也许ModelState自 2 年前 Foolproof 的最后一次更新以来,实施已经改变了?有其他人知道最近发布的库,其功能类似于 Foolproof 吗?

控制器方法:

[HttpPost]
public virtual ActionResult ValidationTest(TestViewModel vm)
{ //breakpoint here to check ModelState.IsValid
    return View(vm); 
}
4

1 回答 1

2

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

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

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

于 2014-10-10T16:05:58.560 回答