Tenho os dois métodos de ação a seguir (simplificado para a pergunta):
[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"]});
}
}
Então, se a validação passar, redireciono para outra página (confirmação).
Se ocorrer um erro, preciso exibir a mesma página com o erro.
Se o fizer return View()
, o erro será exibido, mas se o fizer return RedirectToAction
(como acima), ele perderá os erros de modelo.
Não estou surpreso com o problema, apenas me perguntando como vocês lidam com isso?
Eu poderia, é claro, apenas retornar a mesma visualização em vez do redirecionamento, mas tenho lógica no método "Criar" que preenche os dados da visualização, que eu teria que duplicar.
Alguma sugestão?