鉴于这种路线:在ASP.NET MVC中,如果URL段包含文字破折号并且其中一个参数约束允许破折号,我如何将URL匹配到路由?
{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-]+"
}
);
这将不匹配的请求到〜/测试42问候世界/
而且我的意思是,ASP.NET路由引擎做甚至没有考虑这个网址的路线。我知道,因为我用自定义IRouteConstraint
取代了其中一个约束,并在其Match()
方法中放置了一个断点,并且我的断点从未被击中。
我想知道我想做什么是可能的。
如果不是的话,我会非常感激链接到一些文档(或源代码),我可以通过这些链接了解这种方法无效的原因。
你是如何解决这个问题的?你有没有找到在段中使用破折号的方法,所以值“hello-world”的参数被正确识别? – mykhailovskyi