這裏是我的路線,唯一需要的參數是控制器ASP.net MVC 4路由和可選參數意想不到的結果
routes.MapRoute(
"countryoptional/controller",
"{country}/{controller}/{pagelabel}/{page}",
new { action = "index", country = UrlParameter.Optional, pagelabel = UrlParameter.Optional, page = UrlParameter.Optional },
new
{
pays = @"$|^(france|belgium)$",
controller = @"^(car|boat)$",
pagelabel = @"^$|page",
page = @"^$|\d{1,6}"
}
);
我期待通過以下網址與合作:
/車/
/車/頁/ 2
/法國/汽車
/法國/車/頁/ 2
它種工作方式:
Url.Action("index", "car", new { country= "france", pagelabel = "page", page = 2})
會產生:/法國/車/頁/ 2
但
如果我想要一個沒有國家的網址查看動作響應,但一個構造像
Url.Action("index", "car", new { pagelabel = "page", page = 2})
會產生此鏈接://汽車/頁/ 2
我得到這個雙斜線「//車」,所以它打破了課程的鏈接。
我懷疑它不喜歡{country}/{controller}/... url定義中控制器可選的{country}參數的可能性 我不想讓我的路由配置複雜化,有另一個路線聲明 必須有一種方法,我做錯了什麼?
在您的可選參數中,您已付款而不是國家/地區。我不確定這是否有所作爲。 –
我對正則表達式並不太滿意,但我相信你會添加一個約束條件來確保該國是法國還是比利時。所以當你不提供它時,它不會設定國家的價值。 –