【发布时间】:2015-11-23 07:49:40
【问题描述】:
鉴于这条路线:
{prefix}-{id}-{postfix}
有一个 URL 段和 3 个所谓的参数:prefix、id 和 postfix。任何带有 3 个破折号的 URL 通常会匹配此路由(如果参数值匹配为这些参数定义的约束)。但是,一旦我为第三个参数定义了一个允许破折号的正则表达式约束,整个路由就不再匹配。
例如:
routes.MapRoute(
url: "{prefix}-{id}-{postfix}",
constraints: new {
prefix: "test",
id: "42"
postfix: "[a-z-]+"
}
);
这将不匹配到 ~/test-42-hello-world/ 的请求
我的意思是 ASP.NET 路由引擎甚至不考虑这个 URL 的路由。我知道这是因为我用自定义的IRouteConstraint 替换了其中一个约束,并在其Match() 方法中放置了一个断点,而我的断点从未被命中。
我想知道我想做的事情是否可行。
如果没有,我非常感谢提供一些文档(或来源)的链接,我可以查看这些链接以了解这不起作用的原因。
【问题讨论】:
-
你是怎么解决这个问题的?您是否找到了在段中使用破折号以便正确识别值为
hello-world的参数的方法?
标签: asp.net-mvc asp.net-mvc-routing