如何使用DbEntityValidationException
try
{
db.SaveChanges();
}
catch (DbEntityValidationException dbEx)
{
foreach (var validationErrors in dbEx.EntityValidationErrors)
{
foreach (var validationError in validationErrors.ValidationErrors)
{
this.ModelState.AddModelError(validationError.PropertyName,
validationError.ErrorMessage);
}
}
return RedirectToAction("AccessDetail", "Home", new { IDValue = access.ID });
}
看来我执行此操作时RedirectToAction
ModelState
刷新,我无法查看找到的错误。
AccessDetail填充了一个视图模型,其中包含许多不同的数据源。因此,仅将访问传递给视图无效。
我正在查看此question但它不符合我的需求,因为我的视图中填充了ViewModel
答案 0 :(得分:3)
RedirectToAction
辅助方法向客户端发出302
响应,使客户向新网址发出新的 GET 请求。
如果您想在这两个请求之间保留一些数据,请使用TempData
。
TempData["Errors"] = yourListOfErrors;
return RedirectToAction("AccessDetail", "Home", new { IDValue = access.ID });
在GET
操作中,阅读TempData值并显示它。
但是如果你不想做RedirecToAction,你可以简单地将viewmodel返回给视图,如果你有ValidationSummary助手方法,它将显示验证错误消息。
只需使用
return View(model);