ModelState の更新
こんにちは、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 値をハードコーディングしました。値をルックアップ テーブルの値と比較する最良の方法は何ですか? 列挙型は最善の方法ですか?
ありがとう