23

我有一个Dashboard用 3 个动作调用的控制器:SummaryDetailsStatus,它们都不接受 ID 或任何其他参数。我希望 URL像那样/Dashboard路由到控制器的Summary操作,但我无法找出添加路由的正确方法。在中,我有以下内容:Dashboard/Dashboard/SummaryGlobal.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。我很确定我遗漏了关于 to 参数格式的一些东西MapRoute,但我不知道它是什么......

4

3 回答 3

36

将 Dashboard 路由移到 Default 路由之前:

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操作。

于 2012-10-03T19:46:06.357 回答
6

您需要最后声明“默认”包罗万象的路线。

于 2012-10-03T19:45:53.757 回答
1

这为任何控制器 asp.net 设置默认操作:

routes.MapRoute("Dashboard", "{controller}/{action}", 
defaults: new { controller = "Dashboard", action = "Summary" });
于 2017-04-05T10:56:04.980 回答