繁体   English   中英

ASP.NET MVC路由匹配。

[英]ASP.NET MVC route matching.

在ASP.NET MVC路由(不是Web API)中,如何匹配路由开头而不是后面的任何整数。

例如,我看到的示例中提到了如何匹配/ website / Product / {id}的示例-这里创建了一个带id参数的ProductController,并在id参数上指定了约束。

但是,我正在尝试匹配看起来像这样的路由-/ website / {top-level-id} / Product / {id}

顶级ID可以是任何整数。 关于如何进行此操作有任何想法吗?

这样的事情应该起作用:

 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("TopLevelProduct", "{topLevelId}/Product/{id}", 
           new { controller = "Product", action = "Index" });

您可以用任何您想执行的操作来替换Index,以及您的id是否具有可选的默认值(我将您的顶级标识符重命名,因为在C#中使用这些连字符很尴尬

routes.MapRoute("TopLevelProduct", "{topLevelId}/Product/{id}", 
       new { controller = "Product", action = "Index", topLevelId = 0, id = 0 });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM