これが私のルートです。必要な唯一のパラメーターはコントローラーです
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}"
}
);
次の URL が動作することを期待しています。
/車/
/車/ページ/2
/フランス/車
/フランス/車/ページ/2
それは一種の作品です:
Url.Action("index", "car", new { country= "france", pagelabel = "page", page = 2} )
生成します: /france/car/page/2
しかし
国なしのURLが必要な場合、ビューアクションは応答しますが、コンストラクターは次のようになります
Url.Action("index", "car", new { pagelabel = "page", page = 2} )
このリンクが生成されます: //car/page/2
この二重スラッシュ「//car」を取得するため、もちろんリンクが壊れます。
{country}/{controller}/... URL 定義で {country} パラメーターがコントローラーの前にある可能性が気に入らないのではないかと思います。ルート構成を複雑にして、別のルート宣言を作成したくありません。道でなければならない、私が間違っていることは何ですか?