如何创建一个没有动作的路线?

Ray*_*eng 3 asp.net-mvc

是否有可能在没有行动的情况下创建路线?

我有这个默认路线:

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)

但我也想有这样的URL:http://mysite/bar/1234这里1234IDbar是控制器.

所以我创建了以下路线:

routes.MapRoute(
    name: "BarRoute",
    url: "{controller}/{id}",
    defaults: new { controller = "bar", action = "Index", id = UrlParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)

但是当我导航到http://mysite/bar/1234它时,它说没有找到资源.我在第二条路上做错了什么?

jwa*_*zko 5

routes.MapRoute(
  name:        "BarRoute",
  url:         "{controller}/{id}",
  defaults:    new { controller = "Bar", action = "Index" },
  constraints: new { id = @"\d+" }
);
Run Code Online (Sandbox Code Playgroud)

您必须考虑到您的路线必须放置在适当的位置 - 在更一般的路线之前,例如:

routes.MapRoute(
           name: "BarRoute",
routes.MapRoute(
           name: "Default",
Run Code Online (Sandbox Code Playgroud)