我有一个名为Dashboard
的控制器,其中包含3个操作:Summary
,Details
和Status
,其中任何一个都不带ID或任何其他参数。我希望网址/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" }
);
但在尝试访问/Dashboard
时,我总是得到404。我很确定我错过了MapRoute
参数格式的一些内容,但我不知道它是什么......
答案 0 :(得分:35)
将您的仪表板路线移到默认路线前面:
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
开头的网址,并允许在Dashboard
控制器中执行其他操作。如您所见,它将默认为Summary
操作。
答案 1 :(得分:5)
您需要最后声明“默认”全部捕获路线。
答案 2 :(得分:0)
这为任何Controller asp.net设置默认操作:
routes.MapRoute("Dashboard", "{controller}/{action}",
defaults: new { controller = "Dashboard", action = "Summary" });