J'ai les deux méthodes d'action suivantes (simplifiées pour la question):
[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"]});
}
}
Donc, si la validation réussit, je redirige vers une autre page (confirmation).
Si une erreur se produit, je dois afficher la même page avec l'erreur.
Si je le fais return View()
, l'erreur est affichée, mais si je le fais return RedirectToAction
(comme ci-dessus), il perd les erreurs de modèle.
Je ne suis pas surpris par le problème, je me demande simplement comment vous gérez cela?
Je pourrais bien sûr simplement retourner la même vue au lieu de la redirection, mais j'ai une logique dans la méthode "Create" qui remplit les données de vue, que je devrais dupliquer.
Aucune suggestion?