Pregunta

Me preguntaba si podría crear un mapa de enrutamiento con un nivel más alto que el controlador. El enrutamiento típico incluiría " / controller / action / id " ;. Lo que estoy buscando es algo así como "sección / controlador / acción / id" o "controlador / sección / acción / id". ¿Cómo puedo hacer esto?

¿Fue útil?

Solución

No hay problema. Simplemente cree una ruta cuya URL sea, por ejemplo

path/to/my/application/{controller}/{action}/{id}

... y proporcione un controlador predeterminado y una acción como de costumbre.

Un ejemplo concreto de esto es

context.MapRoute(
    "Admin_default",
    "admin/{controller}/{action}/{id}",
    new { controller = "AdminHome", action = "Index", id = "" }
);

Esto asignará, por ejemplo, las siguientes URL:

/admin/                   => AdminHomeController.Index
/admin/adminhome/         => AdminHomeController.Index
/admin/other/             => OtherController.Index
/admin/statistics/view/50 => StatisticsController.View(50)

Tenga en cuenta, sin embargo, que si también tiene una ruta predeterminada, por ejemplo, así:

context.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = "" }
);

... entonces también se puede acceder a los métodos de acción del controlador en la ruta del administrador a través de esta ruta. Utilice el Depurador de enrutamiento de URL para saber con certeza .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top