web-dev-qa-db-fra.com

Définir l'action par défaut (au lieu de l'index) pour le contrôleur dans ASP.NET MVC 3

J'ai un contrôleur appelé Dashboard avec 3 actions: Summary, Details et Status, dont aucun ne prend d'ID ni aucun autre paramètre. Je souhaite que l'URL /Dashboard soit acheminée vers l'action Summary du contrôleur Dashboard, comme le fait /Dashboard/Summary, mais je ne parviens pas à trouver la bonne façon d'ajouter l'itinéraire. Dans Global.asax.cs, j'ai les éléments suivants:

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" }
    );

Pour la deuxième partie, j'ai aussi essayé:

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

et

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

mais je reçois toujours un 404 en essayant d'accéder à /Dashboard. Je suis à peu près sûr que je manque quelque chose sur le format pour les paramètres à MapRoute, mais je ne sais pas ce que c'est ...

21
Cody

Déplacez votre route de tableau de bord devant la route par défaut:

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
);

L'ordre des itinéraires change tout. Notez également les modifications apportées à la route Dashboard. Le premier paramètre est le nom de la route. Deuxièmement, l'URL, qui correspond aux URL commençant par Dashboard et permet d'autres actions dans votre contrôleur Dashboard. Comme vous pouvez le constater, l’action par défaut Summary est utilisée par défaut.

35
Gromer

Vous devez déclarer le dernier itinéraire "Défaut".

5
tuxedo25

Cette action définie par défaut pour tout contrôleur asp.net:

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