我已经映射了路线:
routes.MapRoute("test", "/{p1:int}-{p2}", new { controller = "test", action = "int" });
这样的路由应该匹配int-string,如/1-stuff
,并且它适用于这种情况,但它不适用于/1-stuff-stuff
。我想这是因为路由匹配,然后由于int约束而拒绝params。
如果我删除约束p1
等于1-stuff
,p2
等于stuff
。有没有办法以正确的方式应用约束或将p2标记为"贪婪" (但不是全能),所以p1
等于1
而p2
等于stuff-stuff
?
这对于制作人性化的网址非常重要,其中ids在前面,所有东西都是烤肉串而没有其他字符。
Catch-all对我不起作用我需要将p2绑定到action参数。正则表达式没有帮助。
答案 0 :(得分:0)
为什么不尝试类似...
split("-")
...然后在动作中解析p1
根据您的要求,正则表达式可能需要进行一些调整,但是在这种情况下,p1将为“ 1-stuff-stuff”,那么您可以{{1}} p1来获取值