我是 MVC 菜鸟,我正在尝试通过添加 ModelState.modelerror 来验证下拉列表并显示自定义错误消息。在内部,我的字段“Board”是屏幕上显示的下拉列表,称为“ProviderId”。在 UI 上,当我没有从下拉列表中选择值时,我想看到消息“Board cannot be empty”,但我只看到“ProviderId field is required”。此方法似乎适用于其他编辑字段。
这是我的控制器代码
[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);
}
这是我的相关查看代码
<div class="editor-field">
@Html.DropDownList("ProviderID", String.Empty)
@Html.ValidationMessageFor(model => model.ProviderID)
</div>
它适用于其他两个编辑字段,即当我提交时它会在字段旁边打印自定义消息,但它总是将内部绑定消息“需要 providerId 字段”用于下拉列表。我需要做什么才能将消息更改为自定义添加的消息。这发生在代码中的所有下拉列表中!ProviderId 是数据库中的必填字段,因此我看到了消息,但是如何覆盖它以显示自定义消息?也许这是一个简单的修复,但我是 MVC 的新手(2 小时)并且想要修复这个
“董事会不能为空”
已编辑:该字段是 ProviderID