I have a controller called Dashboard
with 3 actions: Summary
, Details
, and Status
, none of which take an ID or any other parameters. I want the URL /Dashboard
to route to the Summary
action of the Dashboard
controller, as /Dashboard/Summary
does, but I can't figure out the correct way to add the route. In Global.asax.cs
, I have the following:
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" } );
For the second part, I've also tried:
routes.MapRoute( "/Dashboard", "{controller}", new { controller = "Dashboard", action = "Summary" } );
and
routes.MapRoute( "/Dashboard", "{controller}", new { action = "Summary" } );
but I always get a 404 when trying to access /Dashboard
. I'm pretty sure I'm missing something about the format for the parameters to MapRoute
, but I don't know what it is...
Move your Dashboard route in front of the Default route:
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 );
The order of routes changes everything. Also, notice the changes I made to the Dashboard
route. The first parameter is the name of the route. Second is the URL, which match URLs that start with Dashboard
, and allows for other actions in your Dashboard
controller. As you can see, it will default to the Summary
action.
You need to declare the "Default" catch-all route last.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With