Маршрутизация с именем контроллера и без него в ASP.NET MVC 4
Я использую ASP.NET MVC 4, и у меня есть некоторые проблемы с настройками моих маршрутов. Не могли бы вы рассказать мне, как настроить маршруты для указания URL-адресов на действия следующим образом:
- "/" (или "/Start" ) = > PublicController.Start()
- "/About" = > PublicController.About()
- "/MyPage" (или "/MyPage/Summary" ) = > MyPageController.Summary()
- "/MyPage/Invoices" = > MyPageController.Invoices()
- "/MyPage/Invoice/72" = > MyPageController.Invoice(int id)
Это url "/About", который меня беспокоит, т.е. URL-адрес, который не указывает контроллер. Если я сделаю так, что другие будут работать, остальные перестанут работать. Я мог бы просто создать отдельный контроллер для "/О себе", я думаю, но я бы предпочел, если мне это не нужно (у меня больше URL-адресов после этого шаблона).
Ответы
Ответ 1
Это должно сделать это:
routes.MapRoute(
name: "About",
url: "About",
defaults: new { controller = "Public", action = "About" }
);
routes.MapRoute(
name: "MyPageSummary",
url: "MyPage",
defaults: new { controller = "MyPage", action = "Summary" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Public", action = "Start", id = UrlParameter.Optional }
);