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?

Foi útil?

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 .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top