Ho i seguenti due metodi di azione (semplificati per la domanda):
[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"]});
}
}
Quindi, se la convalida passa, reindirizzo a un'altra pagina (conferma).
Se si verifica un errore, è necessario visualizzare la stessa pagina con l'errore.
Se lo faccio return View()
, viene visualizzato l'errore, ma se lo faccio return RedirectToAction
(come sopra), perde gli errori del modello.
Non sono sorpreso dal problema, mi chiedo solo come lo gestite?
Ovviamente potrei semplicemente restituire la stessa vista invece del reindirizzamento, ma ho una logica nel metodo "Crea" che popola i dati della vista, che dovrei duplicare.
Eventuali suggerimenti?