Comment RedirectToAction dans ASP.NET MVC sans perdre les données de demande

À l'aide ASP.NET MVC il existe des situations (telles que la soumission de formulaire) qui peuvent nécessiter un RedirectToAction .

Une telle situation se produit lorsque vous rencontrez des erreurs de validation après une soumission de formulaire et devez rediriger vers le formulaire, mais que l'URL reflète l'URL du formulaire et non la page d'action à laquelle il est soumis.

Comme j'exige que le formulaire contienne les données POST d'origine, pour des raisons de commodité et de validation, comment puis-je transmettre les données via le RedirectToAction() ? Si j'utilise le paramètre viewData, mes paramètres POST seront modifiés en paramètres GET .

0
Pourquoi ne renvoyez-vous pas la même vue en cas d'erreur? RedirectToAction est généralement appelé si le modèle est valide - ou ai-je oublié quelque chose?!
ajouté l'auteur niico, source
Voici une question similaire (sur le même sujet), mais différente de celle-ci. Quoi qu'il en soit, il peut toujours intéresser ceux qui s'intéressent à cette question: http://stackoverflow.com/questions/129335/how-do-you-redirec‌ ttoaction-using-post & zwnj; -intead-of-get
ajouté l'auteur Chris Pietschmann, source

1 Réponses

La solution consiste à utiliser la propriété TempData pour stocker les composants Request souhaités.

Par exemple:

public ActionResult Send()
{
    TempData["form"] = Request.Form;
    return this.RedirectToAction(a => a.Form());
}

Ensuite, dans votre action "Formulaire" vous pouvez aller:

public ActionResult Form()
{
    /* Declare viewData etc. */

    if (TempData["form"] != null)
    {
        /* Cast TempData["form"] to 
        System.Collections.Specialized.NameValueCollection 
        and use it */
    }

    return View("Form", viewData);
}
0
ajouté