C# ASP.NET MVC路由匹配。
在ASP.NET MVC路由(不是web API)中,如何匹配路由开头的整数而不是之后的整数 例如,我看到一些例子提到如何匹配/website/Product/{id}——这里用id参数创建了一个ProductController,并在id参数上指定了约束 然而,我正在尝试匹配一条看起来像这样的路线- /网站/{顶级id}/产品/{id}C# ASP.NET MVC路由匹配。,c#,.net,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-routing,C#,.net,Asp.net Mvc,Asp.net Mvc 4,Asp.net Mvc Routing,在ASP.NET MVC路由(不是web API)中,如何匹配路由开头的整数而不是之后的整数 例如,我看到一些例子提到如何匹配/website/Product/{id}——这里用id参数创建了一个ProductController,并在id参数上指定了约束 然而,我正在尝试匹配一条看起来像这样的路线- /网站/{顶级id}/产品/{id} 顶级id可以是任何整数。您有什么想法吗?您可以添加这样一条路线 routes.MapRoute("TopLevelProduct", "{topLevelId
顶级id可以是任何整数。您有什么想法吗?您可以添加这样一条路线
routes.MapRoute("TopLevelProduct", "{topLevelId}/Product/{id}",
new { controller = "Product", action = "Index" });
你们可以用任何你们想点击的动作来替换索引,若你们想使用可选的默认值(我已经重命名了你们的顶级标识符,因为在C中使用这些连字符很尴尬)#
像这样的方法应该会奏效:
routes.MapRoute(
name: "WithTopId",
url: "{topId}/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
constraints: new { topId = "^[0-9]*$", id = "^[0-9]*$" }
);
然后将此路由置于默认路由之上
routes.MapRoute(
name: "WithTopId",
url: "{topId}/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
constraints: new { topId = "^[0-9]*$", id = "^[0-9]*$" }
);