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

Cod*_*ody 22 c# asp.net-mvc routes asp.net-mvc-routing asp.net-mvc-3

我有一个称为控制器Dashboard3个操作:Summary,Details,和Status,其中没有一个采取的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" }
    );
Run Code Online (Sandbox Code Playgroud)

对于第二部分,我也尝试过:

routes.MapRoute(
    "/Dashboard",
    "{controller}",
    new { controller = "Dashboard", action = "Summary" }
    );
Run Code Online (Sandbox Code Playgroud)

routes.MapRoute(
    "/Dashboard",
    "{controller}",
    new { action = "Summary" }
    );
Run Code Online (Sandbox Code Playgroud)

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

Gro*_*mer 36

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

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
);
Run Code Online (Sandbox Code Playgroud)

路线的顺序改变了一切.另外,请注意我对Dashboard路线所做的更改.第一个参数是路径的名称.第二个是URL,它匹配以...开头的URL Dashboard,并允许Dashboard控制器中的其他操作.如您所见,它将默认为Summary操作.


小智 5

您需要最后声明"默认"全部捕获路由.