Routage personnalisé .NET MVC
-
06-07-2019 - |
Question
Je me demandais si je pouvais créer une carte de routage avec un niveau supérieur au contrôleur. Le routage typique comprendrait "/ controller / action / id". Ce que je recherche, c’est quelque chose comme "section / contrôleur / action / id". ou "contrôleur / section / action / id". Comment puis-je faire cela?
La solution
Pas de problème. Créez simplement une route dont l'URL est, par exemple
chemin / vers / mon / application / {contrôleur} / {action} / {id}
... et fournissez un contrôleur par défaut et une action comme d'habitude.
Un exemple concret de cela est
context.MapRoute(
"Admin_default",
"admin/{controller}/{action}/{id}",
new { controller = "AdminHome", action = "Index", id = "" }
);
Ceci mappera, par exemple, les URL suivantes:
/admin/ => AdminHomeController.Index
/admin/adminhome/ => AdminHomeController.Index
/admin/other/ => OtherController.Index
/admin/statistics/view/50 => StatisticsController.View(50)
Notez cependant que si vous avez également une route par défaut, par exemple, procédez comme suit:
context.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
... alors les méthodes d'action du contrôleur dans le routage Admin peuvent également être accessibles via cette route. Utilisez le débogueur de routage d'URL pour plus d'informations. .