encaminhamento personalizado .NET MVC
-
06-07-2019 - |
Pergunta
Eu queria saber se eu poderia criar um mapa de roteamento com um nível mais elevado do que o controlador. O roteamento típica incluiria "/ controller / action / id". O que eu estou procurando é algo como "seção / controller / action / id" ou "controlador / section / ação / id". Como posso fazer isso?
Solução
Não há problema. Basta criar uma rota a URL da qual é, por exemplo
path/to/my/application/{controller}/{action}/{id}
... e fornecer um controlador de padrão e ação como de costume.
Um exemplo concreto disso é
context.MapRoute(
"Admin_default",
"admin/{controller}/{action}/{id}",
new { controller = "AdminHome", action = "Index", id = "" }
);
Este irá mapear, por exemplo, os seguintes URLs:
/admin/ => AdminHomeController.Index
/admin/adminhome/ => AdminHomeController.Index
/admin/other/ => OtherController.Index
/admin/statistics/view/50 => StatisticsController.View(50)
Note, porém, que se você também tem uma rota padrão, por exemplo como este:
context.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
... métodos de ação, então controlador do roteamento de administração pode também ser acessível por esta via. Use o URL Routing Debugger para descobrir com certeza .