私は MVC 初心者で、ModelState.modelerror を追加して、ドロップダウン リストを検証し、カスタム エラー メッセージを表示しようとしています。内部的には、画面に表示されるドロップダウン リストであるフィールド「Board」は「ProviderId」と呼ばれます。UI で、ドロップダウンから値を選択しないときに「ボードを空にすることはできません」というメッセージを表示したいのですが、「ProviderId フィールドが必要です」としか表示されません。この方法は、他の編集フィールドでも機能するようです。
これは私のコントローラーコードです
[HttpPost]
public ActionResult Create(CourseList courselist)
{
//This works! It shows Class Name cannot be Empty next to class field on submit
if (courselist.CourseName == null)
{
ModelState.AddModelError("CourseName", " Class Name cannot be Empty");
ViewBag.ProviderID = new SelectList(db.ProviderLists, "ProviderID", "ProviderName", courselist.ProviderID);
return View(courselist);
}
//This does not work! It shows the internal binding message instead of this custom message
if (courselist.ProviderID == null)
{
ModelState.AddModelError("ProviderID", " Board cannot be Empty");
ViewBag.ProviderID = new SelectList(db.ProviderLists, "ProviderID", "ProviderName", courselist.ProviderID);
return View(courselist);
}
if (ModelState.IsValid)
{
db.CourseLists.Add(courselist);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.ProviderID = new SelectList(db.ProviderLists, "ProviderID", "ProviderName", courselist.ProviderID);
return View(courselist);
}
これは私の関連するViewコードです
<div class="editor-field">
@Html.DropDownList("ProviderID", String.Empty)
@Html.ValidationMessageFor(model => model.ProviderID)
</div>
他の 2 つの編集フィールドでは正常に機能します。つまり、送信時にフィールドの横にカスタム メッセージが出力されますが、ドロップダウン リストには常に「providerId フィールドが必要です」という内部バインディング メッセージが表示されます。メッセージをカスタム追加メッセージに変更するにはどうすればよいですか。これは、コード内のすべてのドロップダウン リストで発生します。ProviderId は DB の必須フィールドであり、メッセージが表示されますが、それをオーバーライドしてカスタム メッセージを表示するにはどうすればよいですか? これは簡単な修正かもしれませんが、私は MVC の初心者 (2 時間) であり、これを修正したいと考えています。
「ボードを空にすることはできません」
EDITED : フィールドは ProviderID です