鑑於這種路線:在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