在ASP.NET MVC 3中为控制器设置默认操作(而不是索引)

我有一个名为Dashboard的控制器,其中包含3个操作: SummaryDetailsStatus ,其中任何一个都不带ID或任何其他参数。 我希望URL /Dashboard路由到Dashboard控制器的Summary操作,如/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" } ); 

但是在尝试访问/Dashboard时我总是得到404。 我很确定我错过了关于MapRoute参数格式的一些内容,但我不知道它是什么…

将您的仪表板路线移动到默认路线前:

 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,它匹配以Dashboard开头的URL,并允许在Dashboard控制器中执行其他操作。 如您所见,它将默认为“ Summary操作。

您需要最后声明“默认”全部捕获路由。

这为任何Controller asp.net设置默认操作:

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