【发布时间】:2010-12-09 11:24:04
【问题描述】:
刷新模型状态
您好,我有一个关于 ASP.NET MVC 控制器中的 ModelState 的问题。
当用户从视图中选择某个选项时,“认证”的开始日期和结束日期将根据输入的其他日期进行设置。
问题在于认证日期返回为 null,而我们的 CertificationMetaData 类将字段指定为 [Required],因此一旦加载操作,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();
}
您还可以看到,我已经硬编码了认证类型的 ID 值。将值与查找表值进行比较的最佳方法是什么?枚举是最好的方法吗?
谢谢
【问题讨论】:
标签: c# asp.net-mvc modelstate