Обновление ModelState
Привет, у меня вопрос по ModelState в контроллере ASP.NET MVC.
Когда пользователь выбирает определенную опцию в представлении, дата начала и дата окончания «сертификации» будут установлены на основе других введенных дат.
Проблема в том, что даты сертификации возвращаются как нулевые, а наш класс 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();
}
Также, как вы можете видеть, я жестко закодировал значение идентификатора для типа сертификации. Каков наилучший способ сравнить значения со значениями таблицы поиска? Enum - лучший путь?
Спасибо