繁体   English   中英

将ModelState传递给RedirectToAction到ViewModel中

[英]Passing ModelState to RedirectToAction into a ViewModel

当使用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填充其中包含许多不同数据源的视图模型。 因此,仅将对视图的访问权限传递不起作用。

我当时在看这个问题,但由于我的视图是用ViewModel填充的,所以它不符合我的需求

RedirectToAction帮助程序方法向客户端发出302响应,使客户端向新的url发出新的GET请求。

如果要在这两个请求之间保留一些数据,请使用TempData

TempData["Errors"] = yourListOfErrors;
return RedirectToAction("AccessDetail", "Home", new { IDValue = access.ID });

然后在GET操作中,读取TempData值并显示它。

但是,如果您不想执行RedirecToAction,则可以简单地将viewmodel返回到视图,并且如果您具有ValidationSummary帮助器方法,它将显示验证错误消息。

只需使用

return View(model);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM