50 votes

Quelle est la différence entre Redirect et RedirectToAction dans ASP.NET MVC ?

Quelle est la différence entre Redirect y RedirectToAction autres que leur type de retour ? Quand les utiliser ? Une explication avec un scénario réel m'aiderait beaucoup.

Je regardais Confusion entre Redirect et RedirectToAction mais, pour moi, il semble que la réponse est plus spécifique à la manipulation id et retourner la vue appropriée.

81voto

Omar Points 16654

RedirectToAction vous permet de construire une URL de redirection vers une action/contrôleur spécifique de votre application, c'est-à-dire qu'il utilisera la table des routes pour générer l'URL correcte.

Redirect exige que vous fournissiez une URL complète vers laquelle rediriger.

Si vous avez une action Index sur le contrôleur Home avec un paramètre Id :

  1. Vous pouvez utiliser RedirectToAction("Index", "Home", new { id = 5 }) qui générera l'URL pour vous en se basant sur votre tableau de routes.

  2. Vous pouvez utiliser Redirect mais vous devez construire l'URL vous-même, donc vous passez la commande Redirect("/Home/Index/5") ou quelle que soit la façon dont votre table de route fonctionne.

  3. Vous ne pouvez pas rediriger vers google.com (une URL externe) en utilisant RedirectToAction vous devez utiliser Redirect .

RedirectToAction est destiné à effectuer des redirections 302 dans votre application et vous offre un moyen plus facile de travailler avec votre table de routage.

Redirect est destiné à effectuer des redirections 302 vers tout le reste, en particulier vers des URL externes, mais vous pouvez toujours effectuer des redirections au sein de votre application, vous devez simplement construire les URL vous-même.

Meilleures pratiques : Utilisez RedirectToAction pour tout ce qui concerne les actions/contrôleurs de votre application. Si vous utilisez Redirect et fournir l'URL, vous devrez modifier ces URLs manuellement lorsque votre table de route changera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X