Comment rediriger une demande dans ASP.NET Core MVC

ASP.NET Core est une infrastructure multiplateforme, open source, allégée, rapide et modulaire pour la création d'applications Web hautes performances. Les applications ASP.NET Core MVC vous permettent de rediriger une demande vers une URL spécifiée de plusieurs manières différentes. Cet article explique comment nous pouvons y parvenir avec des exemples de code le cas échéant.

Pour utiliser les exemples de code fournis dans cet article, vous devez disposer de Visual Studio 2019 installé sur votre système. Si vous n'en avez pas déjà une copie, vous pouvez télécharger Visual Studio 2019 ici. 

[Aussi sur: Comment refactoriser des objets Dieu en C #]

Créer un projet ASP.NET Core MVC dans Visual Studio

Tout d'abord, créons un projet ASP.NET Core dans Visual Studio 2019. En supposant que Visual Studio 2019 est installé sur votre système, suivez les étapes décrites ci-dessous pour créer un nouveau projet ASP.NET Core dans Visual Studio.

  1. Lancez l'IDE de Visual Studio.
  2. Cliquez sur "Créer un nouveau projet".
  3. Dans la fenêtre «Créer un nouveau projet», sélectionnez «Application Web ASP.NET Core» dans la liste des modèles affichés.
  4. Cliquez sur Suivant.
  5. Dans la fenêtre «Configurer votre nouveau projet», spécifiez le nom et l'emplacement du nouveau projet.
  6. Cochez éventuellement la case «Placer la solution et le projet dans le même répertoire», en fonction de vos préférences.
  7. Cliquez sur Créer.
  8. Dans la fenêtre «Créer une nouvelle application Web ASP.NET Core» affichée ci-dessous, sélectionnez .NET Core comme moteur d'exécution et ASP.NET Core 3.1 (ou version ultérieure) dans la liste déroulante en haut.
  9. Sélectionnez «Application Web (Model-View-Controller)» comme modèle de projet pour créer une nouvelle application ASP.NET Core MVC. 
  10. Assurez-vous que les cases à cocher «Activer le support Docker» et «Configurer pour HTTPS» ne sont pas cochées car nous n'utiliserons pas ces fonctionnalités ici.
  11. Assurez-vous que l'authentification est définie sur «Aucune authentification» car nous n'utiliserons pas non plus l'authentification.
  12. Cliquez sur Créer.

En suivant ces étapes, vous créerez un nouveau projet ASP.NET Core MVC dans Visual Studio 2019. Nous utiliserons ce projet dans les sections ci-dessous pour illustrer comment nous pouvons rediriger les demandes lorsque vous travaillez avec des méthodes d'action dans ASP.NET Core 3.1.

Rediriger les résultats de l'action dans ASP.NET Core MVC

Il existe plusieurs types de résultats d'action dans ASP.NET Core MVC tels que RedirectResult, RedirectToActionResult, RedirectToRouteResult et LocalRedirectResult. Toutes ces classes étendent la classe ActionResult et les interfaces IActionResult et IKeepTempDataResult et retournent Found (Http Status Code 302), Moved Permanently (Http Status Code 301), Temporary Redirect (Http Status Code 307) ou Permanent Redirect (Http Status Code 308) ).

Nous examinerons comment nous pouvons travailler avec chacun de ces éléments dans cette section.

Utiliser RedirectResult dans ASP.NET Core MVC

Vous pouvez utiliser l'une des méthodes suivantes pour renvoyer un RedirectResult:

  • Redirection - Code d'état HTTP 302 trouvé (temporairement déplacé vers l'URL fournie dans l'en-tête de l'emplacement)
  • RedirectPermanent - Le code d'état Http 301 a été déplacé de manière permanente
  • RedirectPermanentPreserveMethod - Code d'état HTTP 308 Redirection permanente
  • RedirectPreserveMethod - Code d'état HTTP 307 Redirection temporaire

Les lignes de code suivantes montrent comment utiliser chacune de ces méthodes.

Redirection ("/ Auteur / Index");
RedirectPermanent ("/ Auteur / Index");
RedirectPermanentPreserveMethod ("/ Auteur / Index");
RedirectPreserveMethod ("/ Auteur / Index");

Vous pouvez également renvoyer une instance de RedirectResult comme indiqué dans l'extrait de code ci-dessous.

Index public RedirectResult ()

{

   renvoie un nouveau résultat de redirection (url: "/ Author / Index", permanent: true,

                             préserverMethod: vrai);

}

Notez que la méthode Redirect peut être utilisée pour rediriger une requête vers une URL spécifiée. Cette méthode est disponible dans la classe de base abstraite appelée ControllerBase.

Index public RedirectResult ()

{

  return Redirect ("// google.com");

}

Il convient de noter que les contrôleurs que vous créez dans ASP.NET Core MVC étendent la classe Controller. Cette classe étend à son tour la classe ControllerBase et implémente les interfaces IActionFilter, IFilterMetadata, IAsyncActionFilter et IDisposable.

Utiliser RedirectToActionResult dans ASP.NET Core MVC

Ce résultat d'action peut être utilisé pour rediriger vers l'action et le contrôleur spécifiés. Si aucun contrôleur n'est spécifié, il redirige vers l'action spécifiée dans le contrôleur actuel. Vous pouvez utiliser l'une des méthodes suivantes pour rediriger vers l'action spécifiée et renvoyer une instance de RedirectToActionResult à partir de votre méthode d'action.

  • RedirectToAction - Code d'état HTTP 302 trouvé (temporairement déplacé vers l'URL fournie dans l'en-tête de l'emplacement)
  • RedirectToActionPermanent - Code d'état HTTP 301 déplacé de manière permanente
  • RedirectToActionPermanentPreserveMethod - Code d'état HTTP 308 Redirection permanente
  • RedirectToActionPreserveMethod - Code d'état HTTP 307 Redirection temporaire

L'extrait de code suivant illustre comment la méthode RedirectToAction peut être utilisée.

Index public RedirectToActionResult ()

{

    return RedirectToAction (actionName: "Index", controllerName: "Author");

}

Vous pouvez ignorer le nom du contrôleur si vous souhaitez rediriger la demande vers une méthode d'action dans le contrôleur actuel. L'extrait de code suivant montre comment cela peut être réalisé.

Index public RedirectToActionResult ()

{

   return RedirectToAction (actionName: "Confidentialité");

}

Utiliser RedirectToRouteResult dans ASP.NET Core MVC

C'est encore un autre résultat d'action qui peut être utilisé pour rediriger la demande vers l'itinéraire spécifié. Vous pouvez utiliser l'une des méthodes suivantes pour renvoyer une instance de RedirectToRouteResult à partir de votre méthode d'action.

  • RedirectToRoute - Code d'état Http 302 trouvé (temporairement déplacé vers l'URL fournie dans l'en-tête de l'emplacement)
  • RedirectToRoutePermanent - Code d'état Http 301 déplacé de manière permanente
  • RedirectToRoutePermanentPreserveMethod - Code d'état HTTP 308 Redirection permanente
  • RedirectToRoutePreserveMethod - Code d'état HTTP 307 Redirection temporaire

L'extrait de code suivant montre comment la méthode RedirectToRoute peut être utilisée.

Index public RedirectToRouteResult ()

{

    return RedirectToRoute ("auteur");

}

Vous pouvez également spécifier la valeur de l'itinéraire lors de la redirection, comme indiqué dans l'extrait de code ci-dessous.

var routeValue = new RouteValueDictionary

 (new {action = "View", controller = "Author"});

return RedirectToRoute (routeValue);

Utiliser LocalRedirectResult dans ASP.NET Core MVC

Ce résultat d'action est utilisé lorsque vous souhaitez rediriger vers une URL locale. Il lève une InvalidOperationException si vous utilisez une URL externe avec elle. Vous pouvez utiliser l'une des méthodes suivantes pour renvoyer une instance de LocalRedirectResult à partir de votre méthode d'action.

  • LocalRedirect - Code d'état Http 302 trouvé (temporairement déplacé vers l'URL fournie dans l'en-tête de l'emplacement)
  • LocalRedirectPermanent - Le code d'état Http 301 a été déplacé de manière permanente
  • LocalRedirectPermanentPreserveMethod - Code d'état HTTP 308 Redirection permanente
  • LocalRedirectPreserveMethod - Code d'état HTTP 307 Redirection temporaire

Redirection vers des pages rasoir dans ASP.NET Core MVC

Enfin, notez que vous pouvez même rediriger vers des pages rasoir à l'aide de la méthode RedirectToPage, en spécifiant la page rasoir cible vers laquelle rediriger la demande. La méthode RedirectToPage renvoie une instance RedirectToPageResult avec un code d'état HTTP 302.

Si vous disposez d'une page nommée Auteur, vers laquelle vous souhaitez que la demande soit redirigée, vous pouvez utiliser l'extrait de code suivant.

public IActionResult RedirectToAuthorPage ()

{

    return RedirectToPage ("Auteur");

}

Comment faire plus dans ASP.NET Core:

  • Comment utiliser le routage d'attributs dans ASP.NET Core
  • Comment passer des paramètres aux méthodes d'action dans ASP.NET Core MVC
  • Comment utiliser les analyseurs d'API dans ASP.NET Core
  • Comment utiliser les jetons de données de route dans ASP.NET Core
  • Comment utiliser la gestion des versions d'API dans ASP.NET Core
  • Comment utiliser des objets de transfert de données dans ASP.NET Core 3.1
  • Comment gérer les erreurs 404 dans ASP.NET Core MVC
  • Comment utiliser l'injection de dépendances dans les filtres d'action dans ASP.NET Core 3.1
  • Comment utiliser le modèle d'options dans ASP.NET Core
  • Comment utiliser le routage de point de terminaison dans ASP.NET Core 3.0 MVC
  • Comment exporter des données vers Excel dans ASP.NET Core 3.0
  • Comment utiliser LoggerMessage dans ASP.NET Core 3.0
  • Comment envoyer des e-mails dans ASP.NET Core
  • Comment enregistrer des données sur SQL Server dans ASP.NET Core
  • Comment planifier des travaux à l'aide de Quartz.NET dans ASP.NET Core
  • Comment renvoyer des données à partir de l'API Web ASP.NET Core
  • Comment formater les données de réponse dans ASP.NET Core
  • Comment consommer une API Web ASP.NET Core à l'aide de RestSharp
  • Comment effectuer des opérations asynchrones à l'aide de Dapper
  • Comment utiliser les indicateurs de fonctionnalité dans ASP.NET Core
  • Comment utiliser l'attribut FromServices dans ASP.NET Core
  • Comment utiliser les cookies dans ASP.NET Core
  • Comment travailler avec des fichiers statiques dans ASP.NET Core
  • Comment utiliser le middleware de réécriture d'URL dans ASP.NET Core
  • Comment implémenter la limitation de débit dans ASP.NET Core
  • Comment utiliser Azure Application Insights dans ASP.NET Core
  • Utilisation des fonctionnalités NLog avancées dans ASP.NET Core
  • Comment gérer les erreurs dans l'API Web ASP.NET
  • Comment implémenter la gestion globale des exceptions dans ASP.NET Core MVC
  • Comment gérer les valeurs NULL dans ASP.NET Core MVC
  • Contrôle de version avancé dans l'API Web ASP.NET Core
  • Comment travailler avec les services de travail dans ASP.NET Core
  • Comment utiliser l'API de protection des données dans ASP.NET Core
  • Comment utiliser un middleware conditionnel dans ASP.NET Core
  • Comment travailler avec l'état de session dans ASP.NET Core
  • Comment écrire des contrôleurs efficaces dans ASP.NET Core