引用:Handling a Variable Number of Segments in a URL Pattern
有時你必須處理URL請求其中包含一個變量 個URL段。定義路線時,如果URL的段數多於模式中的段數,則可以指定 ,但額外的 段將被視爲最後一段的一部分。要以這種方式處理 附加分段,請使用星號(*)標記最後一個參數 。這被稱爲全部參數。具有catch-all參數的路由 也將匹配最後一個參數不包含任何值的URL。
基於約定路線會被映射爲...
config.Routes.MapHttpRoute(
name: "QuestionsRoute",
routeTemplate: "questions/{id}/{*slug}",
defaults: new { controller = "Questions", action = "GetQuestion", slug = RouteParameter.Optional }
);
,或者與屬性路由路由看起來是這樣......
[Route("questions/{id:int}/{*slug?}")]
這都可以與示例控制器動作匹配...
public IActionResult GetQuestion(int id, string slug = null) {...}
的例子網址...
"questions/31223512/web-api-how-to-route-using-slugs"
那麼將有相匹配的參數如下...
id = 31223512
slug = "web-api-how-to-route-using-slugs"
而且由於slug
是可選,上面的URL仍然會匹配到
"questions/31223512"
這應該符合您的要求。
我希望你能得到一個死靈徽章:D –