我有以下两种操作方法(简化了问题):
[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
(如上),它将丢失模型错误。
我对这个问题并不感到惊讶,只是想知道你们如何处理?
我当然可以只返回相同的View而不是重定向,但是我在填充视图数据的“ Create”方法中有逻辑,我必须重复该逻辑。
有什么建议?