嗨,我对ASP.NET MVC控制器中的ModelState有疑问.
当用户从视图中选择某个选项时,将根据输入的其他日期设置"认证"的开始日期和结束日期.
这个问题是认证日期返回为null,我们的CertificationMetaData类将字段指定为[必需],因此一旦操作加载,ModelState就无效.
手动删除ModelSate错误允许这个工作,但我想知道是否有更好的方法来做到这一点?有没有办法刷新ModelState?我应该不要求这些字段吗?或者我应该使用javascript从视图中添加日期值?
public ActionResult Create(FormCollection fc, Certification certification, Absence absence)
{
if (certification.CertificationTypeID == 1)
{
certification.CertificationStartDate = absence.StartDate;
certification.CertificationEndDate = absence.StartDate.AddDays(7);
this.ModelState.Remove("CertificationStartDate");
this.ModelState.Remove("CertificationEndDate");
}
if (this.ModelState.IsValid)
{
// save
return RedirectToAction("Index");
}
return View();
}
Run Code Online (Sandbox Code Playgroud)
另外,您可以看到我已经对证书类型的ID值进行了硬编码.将值与查找表值进行比较的最佳方法是什么?enum是最好的方式吗?
谢谢