我的 Controller 中有这个功能。
[HttpPost]
public ActionResult Edit(EmployeesViewModel viewModel)
{
Employee employee = GetEmployee(viewModel.EmployeeId);
TryUpdateModel(employee);
if (ModelState.IsValid)
{
SaveEmployee(employee);
TempData["message"] = "Employee has been saved.";
return RedirectToAction("Details", new { id = employee.EmployeeID });
}
return View(viewModel); // validation error, so redisplay same view
}
一直失败,ModelState.IsValid
一直返回 false 并重新显示 View 。但我不知道错误是什么。
有没有办法获取错误并将其重新显示给用户?
最佳答案
试试这个
if (ModelState.IsValid)
{
//go on as normal
}
else
{
var errors = ModelState.Select(x => x.Value.Errors)
.Where(y=>y.Count>0)
.ToList();
}
errors 将是所有错误的列表。
如果你想向用户显示错误,你所要做的就是将模型返回到 View ,如果你没有删除 Razor @Html.ValidationFor()
表达式,它会出现。
if (ModelState.IsValid)
{
//go on as normal
}
else
{
return View(model);
}
该 View 将在每个字段旁边和/或 ValidationSummary(如果存在)中显示任何验证错误。
关于c# - 如果 ModelState.IsValid 失败,会收到错误消息吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5212248/