[英]Passing ViewModel in RedirectToAction causing ViewModel properties to be null
[英]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.