2009-10-26 3 views
3

Мне было интересно, могу ли я создать карту маршрутизации с еще более высоким уровнем, чем контроллер. Типичная маршрутизация будет включать «/ controller/action/id». Я ищу что-то вроде раздела/контроллера/действия/id или «контроллера/раздела/действия/id». Как я могу это сделать?Пользовательская маршрутизация .NET MVC

+0

уточнения: Как выглядит ваш раздел? Это путь или знак? И знаете ли вы все свои разделы перед рукой или вы хотите использовать маршрут, который может обрабатывать любой раздел? – DSO

+0

Это не то же самое, что http://stackoverflow.com/questions/1623605/net-mvc-custom-routing/1623624 – bzlm

ответ

4

Нет проблем. Просто создать маршрут по URL которого является, например

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

... и поставить контроллер по умолчанию и действие, как обычно.

Конкретным примером этого является

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

Это карта, например, следующие адреса:

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

Заметим, однако, что если у вас также есть маршрут по умолчанию, например, например:

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

... тогда методы управления контроллером в маршрутизации администратора также могут быть доступны через этот маршрут. Используйте URL Routing Debugger, чтобы узнать наверняка.

+0

Чтобы избежать путаницы, это должно быть '' pathToApplication/ExtraBits/{controller}/... "' где 'pathToApplication' является корнем приложения IIS (т. е.' '' ''). – Richard

+0

Я сам это понял. В любом случае, спасибо за помощь. – dattebayo

Смежные вопросы