将ModelState传递给RedirectToAction到ViewModel

时间:2014-02-21 16:29:40

标签: c# asp.net-mvc entity-framework

如何使用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

1 个答案:

答案 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);