ASP.NET MVC - Qu'est-ce que UrlRoutingModule?
j'ai lu un article sur le cycle de vie des demandes dans MVC. J'ai été bloqué dans la compréhension de la ligne de sous-sol.
L'UrlRoutingModule intercepte la requête
requête-Qu'est-ce que UrlRoutingModule?
j'ai beaucoup cherché sur google mais ne pouvait pas trouver utile
3 réponses
demandes à un ASP.NET L'application web MVC passe d'abord par le UrlRoutingModule
object, qui est un module HTTP. Ce module analyse la demande et effectue la sélection d'itinéraire. UrlRoutingModule
sélectionne le premier objet qui correspond à la demande actuelle. (Un objet route est une classe qui implémente RouteBase
, et est typiquement une instance du Route
classe.) Si aucun itinéraire de match, le UrlRoutingModule
l'objet ne fait rien et laisse la requête retomber sur le normal ASP.NET ou demande IIS traitement.
à partir de L'objet Route sélectionné, le UrlRoutingModule
objet obtient un objet qui implémente l' IRouteHandler
interface et qui est associée à Route
objet. Typiquement, dans une application MVC, ce sera une instance du MvcRouteHandler
classe. MvcRouteHandler
l'instance crée un MvcHandler
objet qui implémente l' IHttpHandler
interface. MvcHandler
object sélectionne alors le contrôleur qui va finalement traiter la requête. Pour en savoir plus, consultez ASP.NET Routage.
UrlRoutingModule
et MvcRouteHandler
les classes sont les points d'entrée ASP.NET MVC framework. Ils exécutent les actions suivantes:
sélectionnez le contrôleur approprié dans une application web MVC.
obtenir une instance de controller spécifique.
Appel du contrôleur
Execute
méthode.
Si vous regardez à l'intérieur du Mondial.asax d'un projet MVC, vous verrez une méthode appelée RegisterRoutes
. À l'intérieur de cela, vous verrez le "défaut" ASP.NET MVC route:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
cette route spécifie le format de la requête URL et la façon dont celle-ci doit être mise en correspondance avec les actions du contrôleur, c'est-à-dire que la première partie de la route identifie le contrôleur, la seconde partie l'action, etc. Vous pouvez ajouter d'autres personnalisé routes vers ceci, ce qui vous permet de travailler avec des URLs différentes format.
UrlRoutingModule
est simplement la classe qui est responsable de prendre L'URL de la requête entrante et de l'apparier à l'une de ces routes, donc l'action correcte du controller est exécutée.
MSDN:
la classe UrlRoutingModule fait correspondre une requête HTTP à une route dans un ASP.NET application. Le module itère à travers toutes les routes dans le La propriété RouteCollection et recherche une route qui a une URL motif que correspond au format de la requête HTTP. Lorsque le module trouve une route correspondante, il récupère L'objet IRouteHandler pour cela route. Du gestionnaire de route, le module reçoit un objet IHttpHandler et utilise cela comme gestionnaire HTTP pour la requête courante.
juste pour ajouter quelques détails.
Comme indiqué par @Ant P ci-dessous le code est utilisé pour enregistrer la route
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
en fait MapRoute
est un Extension method
sur les Routes de collecte, et il mis en œuvre à l'interne comme ci-dessous.
Note: Ce n'est qu'un pseudo-code selon ma compréhension.
var url = "{controller}/{action}/{id}";
var defaults = new RouteValueDictionary();
defaults.Add("controller", "Home");
defaults.Add("action", "Index");
defaults.Add("id", UrlParameter.Optional);
var routeHandler = new MvcRouteHandler();
var Default = new Route(url,defaults,routeHandler);
routes.Add(Default);
Mvcroutehandler's GetHttpHandler()
renvoie une instance de MvcHttpHandler
classe, qui traite en interne toute autre requête.
Espérons que cela aidera à comprendre le rôle de UrlRoutingModule