Vue d’ensemble du routage ASP.NET MVC (VB)
par Stephen Walther
Dans ce tutoriel, Stephen Walther montre comment l’infrastructure ASP.NET MVC mappe les requêtes du navigateur aux actions du contrôleur.
Dans ce tutoriel, vous allez découvrir une fonctionnalité importante de chaque application MVC ASP.NET appelée routage ASP.NET. Le module routage ASP.NET est responsable du mappage des demandes de navigateur entrantes à des actions de contrôleur MVC particulières. À la fin de ce tutoriel, vous comprendrez comment la table de routage standard mappe les requêtes aux actions du contrôleur.
Utilisation de la table de routage par défaut
Lorsque vous créez une application MVC ASP.NET, l’application est déjà configurée pour utiliser ASP.NET routage. ASP.NET Routage est configuré à deux emplacements.
Tout d’abord, ASP.NET routage est activé dans le fichier de configuration web de votre application (fichier Web.config). Le fichier de configuration comporte quatre sections pertinentes pour le routage : la section system.web.httpModules, la section system.web.httpHandlers, la section system.webserver.modules et la section system.webserver.handlers. Veillez à ne pas supprimer ces sections, car sans ces sections, le routage ne fonctionnera plus.
Deuxièmement, et plus important encore, une table de routage est créée dans le fichier Global.asax de l’application. Le fichier Global.asax est un fichier spécial qui contient des gestionnaires d’événements pour ASP.NET événements de cycle de vie des applications. La table de routage est créée pendant l’événement Démarrage de l’application.
Le fichier dans Listing 1 contient le fichier Global.asax par défaut pour une application MVC ASP.NET.
Listing 1 - Global.asax.vb
' Note: For instructions on enabling IIS6 or IIS7 classic mode,
' visit https://go.microsoft.com/?LinkId=9394802
Public Class MvcApplication
Inherits System.Web.HttpApplication
Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
' MapRoute takes the following parameters, in order:
' (1) Route name
' (2) URL with parameters
' (3) Parameter defaults
routes.MapRoute( _
"Default", _
"{controller}/{action}/{id}", _
New With {.controller = "Home", .action = "Index", .id = ""} _
)
End Sub
Sub Application_Start()
RegisterRoutes(RouteTable.Routes)
End Sub
End Class
Lorsqu’une application MVC démarre pour la première fois, la méthode Application_Start() est appelée. Cette méthode, à son tour, appelle la méthode RegisterRoutes(). La méthode RegisterRoutes() crée la table de routage.
La table de routage par défaut contient un itinéraire unique (nommé Default). L’itinéraire par défaut mappe le premier segment d’une URL au nom d’un contrôleur, le deuxième segment d’une URL à une action de contrôleur et le troisième segment à un paramètre nommé id.
Imaginez que vous entrez l’URL suivante dans la barre d’adresse de votre navigateur web :
/Home/Index/3
L’itinéraire par défaut mappe cette URL aux paramètres suivants :
controller = Accueil
action = Index
id = 3
Lorsque vous demandez l’URL /Home/Index/3, le code suivant est exécuté :
HomeController.Index(3)
La route par défaut inclut les valeurs par défaut pour les trois paramètres. Si vous ne fournissez pas de contrôleur, le paramètre du contrôleur est défini par défaut sur la valeur Home. Si vous ne fournissez pas d’action, le paramètre d’action est défini par défaut sur la valeur Index. Enfin, si vous ne fournissez pas d’ID, le paramètre id est défini par défaut sur une chaîne vide.
Examinons quelques exemples de la façon dont l’itinéraire par défaut mappe les URL aux actions du contrôleur. Imaginez que vous entrez l’URL suivante dans la barre d’adresse de votre navigateur :
/Accueil
En raison des valeurs par défaut du paramètre d’itinéraire Default, l’entrée de cette URL entraîne l’appel de la méthode Index() de la classe HomeController dans listing 2.
Listing 2 - HomeController.vb
<HandleError()> _
Public Class HomeController
Inherits System.Web.Mvc.Controller
Function Index(ByVal id As String)
Return View()
End Function
End Class
Dans la liste 2, la classe HomeController inclut une méthode nommée Index() qui accepte un paramètre unique nommé Id. L’URL /Home entraîne l’appel de la méthode Index() avec la valeur Nothing comme valeur du paramètre Id.
En raison de la façon dont l’infrastructure MVC appelle les actions du contrôleur, l’URL /Home correspond également à la méthode Index() de la classe HomeController dans listing 3.
Listing 3 - HomeController.vb (Action d’index sans paramètre)
<HandleError()> _
Public Class HomeController
Inherits System.Web.Mvc.Controller
Function Index()
Return View()
End Function
End Class
La méthode Index() dans listing 3 n’accepte aucun paramètre. L’URL /Home entraîne l’appel de cette méthode Index(). L’URL /Home/Index/3 appelle également cette méthode (l’ID est ignoré).
L’URL /Home correspond également à la méthode Index() de la classe HomeController dans listing 4.
Listing 4 - HomeController.vb (Action d’index avec le paramètre nullable)
<HandleError()> _
Public Class HomeController
Inherits System.Web.Mvc.Controller
Function Index(ByVal id? As Integer)
Return View()
End Function
End Class
Dans listing 4, la méthode Index() a un paramètre Integer. Étant donné que le paramètre est un paramètre nullable (peut avoir la valeur Nothing), l’index() peut être appelé sans déclencher d’erreur.
Enfin, l’appel de la méthode Index() dans listing 5 avec l’URL /Home provoque une exception, car le paramètre Id n’est pas un paramètre nullable. Si vous tentez d’appeler la méthode Index(), vous obtenez l’erreur affichée dans la figure 1.
Listing 5 - HomeController.vb (Action d’index avec le paramètre ID)
<HandleError()> _
Public Class HomeController
Inherits System.Web.Mvc.Controller
Function Index(ByVal id As Integer)
Return View()
End Function
End Class
Figure 01 : Appel d’une action de contrôleur qui attend une valeur de paramètre (cliquer pour afficher l’image pleine taille)
L’URL /Accueil/Index/3, en revanche, fonctionne parfaitement avec l’action Indexer le contrôleur dans La liste 5. La requête /Home/Index/3 entraîne l’appel de la méthode Index() avec un paramètre Id qui a la valeur 3.
Résumé
L’objectif de ce tutoriel était de vous fournir une brève présentation du routage ASP.NET. Nous avons examiné la table de routage par défaut que vous obtenez avec une nouvelle application MVC ASP.NET. Vous avez appris comment l’itinéraire par défaut mappe les URL aux actions du contrôleur.