我有以下两个动作方法(为方便起见进行了简化):
[HttpGet]
public ActionResult Create(string uniqueUri)
{
// get some stuff based on uniqueuri, set in ViewData.
return View();
}
[HttpPost]
public ActionResult Create(Review review)
{
// validate review
if (validatedOk)
{
return RedirectToAction("Details", new { postId = review.PostId});
}
else
{
ModelState.AddModelError("ReviewErrors", "some error occured");
return RedirectToAction("Create", new { uniqueUri = Request.RequestContext.RouteData.Values["uniqueUri"]});
}
}
如果验证通过,我会重定向到另一个页面(确认页面)。
如果出现错误,我需要显示相同的页面并显示错误信息。
如果我使用return View()
,那么错误将被显示,但是如果我使用 return RedirectToAction
(如上所示),它就会丢失模型错误信息。
我对这个问题不感到惊讶,只是想知道你们如何处理这个问题?
当然,我可以返回相同的视图而不是重定向,但是我的“Create”方法中有逻辑来填充视图数据,我必须复制该逻辑。
有什么建议吗?