【发布时间】:2014-10-10 14:10:46
【问题描述】:
我正在使用 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 值”消息,如何抑制此错误?
顺便说一句,我在 MVC5 中。自 2 年前 Foolproof 上次更新以来,ModelState 的实现可能发生了变化?有其他人知道最近发布的功能类似于 Foolproof 的库吗?
控制器方法:
[HttpPost]
public virtual ActionResult ValidationTest(TestViewModel vm)
{ //breakpoint here to check ModelState.IsValid
return View(vm);
}
【问题讨论】:
-
您是否从实际发布的值手动更改 AllowAnyPlan 的值?
-
@ErikFunkenbusch 没有。我在控制器方法的左大括号处设置断点
-
@ErikFunkenbusch 我什至尝试将
AllowAnyPlan改为只读为true,但它仍然会发生 -
我发现如果我重新触发验证
ModelState.Clear(); ValidateModel(myViewModel);它可以正常工作,所以现在这是一种解决方法,但我不想每次都调用它 -
什么是ValidateModel?你是说更新模型吗?
标签: c# asp.net-mvc foolproof-validation