Подтвердить что ты не робот

Установить действие по умолчанию (вместо индекса) для контроллера в ASP.NET MVC 3

У меня есть контроллер под названием Dashboard с тремя действиями: Summary, Details и Status, ни один из которых не принимает идентификатор или любые другие параметры. Я хочу, чтобы URL /Dashboard направлялся на Summary действие контроллера Dashboard, как это делает /Dashboard/Summary, но я не могу определить правильный способ добавления маршрута. В Global.asax.cs у меня есть следующее:

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new {controller = "Home", action = "Index", id = UrlParameter.Optional} // Parameter defaults
    );

routes.MapRoute(
    "/Dashboard",
    "Dashboard",
    new { controller = "Dashboard", action = "Summary" }
    );

Во второй части я также пробовал:

routes.MapRoute(
    "/Dashboard",
    "{controller}",
    new { controller = "Dashboard", action = "Summary" }
    );

и

routes.MapRoute(
    "/Dashboard",
    "{controller}",
    new { action = "Summary" }
    );

но я всегда получаю 404 при попытке доступа к /Dashboard. Я почти уверен, что мне что-то не хватает в формате параметров MapRoute, но я не знаю, что это такое.

4b9b3361

Ответ 1

Перенесите маршрут своей панели перед маршрутом по умолчанию:

routes.MapRoute(
    "Dashboard",
    "Dashboard/{action}",
    new { controller = "Dashboard", action = "Summary" }
);

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new {controller = "Home", action = "Index", id = UrlParameter.Optional} // Parameter defaults
);

Порядок маршрутов меняет все. Также обратите внимание на изменения, внесенные мной в маршрут Dashboard. Первый параметр - это имя маршрута. Второй - это URL-адрес, который соответствует URL-адресам, начинающимся с Dashboard, и позволяет выполнять другие действия в вашем контроллере Dashboard. Как вы можете видеть, по умолчанию будет выполняться действие Summary.

Ответ 2

Вам нужно объявить последний путь по умолчанию "По умолчанию".

Ответ 3

Это действие по умолчанию для любого контроллера asp.net:

routes.MapRoute("Dashboard", "{controller}/{action}", 
defaults: new { controller = "Dashboard", action = "Summary" });