Tengo los siguientes dos métodos de acción (simplificados para la pregunta):
[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"]});
}
}
Entonces, si la validación pasa, redirijo a otra página (confirmación).
Si ocurre un error, necesito mostrar la misma página con el error.
Si lo hago return View()
, se muestra el error, pero si lo hago return RedirectToAction
(como arriba), pierde los errores del modelo.
No me sorprende el problema, solo me pregunto cómo manejan esto.
Por supuesto, podría devolver la misma Vista en lugar de la redirección, pero tengo lógica en el método "Crear" que completa los datos de la vista, que tendría que duplicar.
¿Alguna sugerencia?