簡體   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