すべてのページに表示される言語チューザーを実装しようとしています。
私のアプリケーションには現在2つのルートがあります。
routes.MapRoute(
name: "EventDriven",
url: "{language}/{eventid}/{controller}/{action}/{id}",
defaults: new { language = "en", controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{language}/{controller}/{action}/{id}",
defaults: new { language = "en", controller = "Home", action = "Index", id = UrlParameter.Optional }
);
また、共有_layout.cshtml
ファイルには、次のアクションリンクがあります。
@Html.ActionLink("English", ViewContext.RouteData.Values["action"].ToString(), new {language="en"})
@Html.ActionLink("Français", ViewContext.RouteData.Values["action"].ToString(), new {language="fr"})
私が直面している問題は、{eventid}
ルートセグメントを保持したいのですが、すべてのURLに適用できるわけではありません。
ホームページhttp://localhost/MySite/
の2つのアクションリンクは次のとおりです。
English: http://localhost/MySite/
French: http://localhost/MySite/fr
これは良いことですが、私の内部ページhttp://localhost/MySite/en/2/Donation
のアクションリンクは次のとおりです。
English: http://localhost/MySite/en/2/Donation
French: http://localhost/MySite/fr/Donation
に行くとhttp://localhost/MySite/fr/2/Donation
、アクションリンクは次のとおりです。
English: http://localhost/MySite/en/Donation
French: http://localhost/MySite/fr/2/Donation
2
問題は、言語変更アクションリンクにeventid情報が含まれていないことです。
明示的にプログラムしなくても、両方のリンクにイベントと言語の情報(および将来予測できないその他のルートパラメーター)が含まれるようにするにはどうすればよいですか?