私は、3 つの言語フラグ (画像) を含むレイアウトを使用する ASP.NET MVC4 ベースの Web アプリケーションを持っています。これらのフラグは、サイト全体で表示されます。これらの画像を言語選択に使用したいと思います。特定の言語でページを表示するには、現在の URL にパラメーターを追加して読み込むだけで済みます。次に、コントローラーがそれを評価し、モデルに正しい言語を設定します (または、ある場合はデフォルトのフォールバック言語を設定します)。リクエストで言語が指定されていません)。
次に例を示します。
言語が指定されていません:
http://example.com?StationId=12
指定言語:
http://example.com?StationId=12&lang=1033
私の質問は次のとおりです:言語フラグの画像を囲み、言語パラメーターのみがある場合に、すべてのパラメーターと新しいパラメーターを&lang=1033
それぞれ使用して、現在読み込まれている URL を常に指すレイアウト内のリンクを形成するにはどうすればよいですか??lang=1033
つまり、すべてのパラメーターを使用してまったく同じページへのリンクを作成し、ルート値を URL に追加する方法は?
更新:これは詳細な例です
私_Layout.cshtml
は持っています:
@{
var u_eng = new RouteValueDictionary(Url.RequestContext.RouteData.Values);
var u_deu = new RouteValueDictionary(Url.RequestContext.RouteData.Values);
var u_por = new RouteValueDictionary(Url.RequestContext.RouteData.Values);
u_eng.Add("lang", "1033");
u_deu.Add("lang", "1031");
u_por.Add("lang", "1046");
}
.
.
.
<li>
<a href="@Url.RouteUrl(u_por)" class="Flag BR">BR</a>
</li>
<li>
<a href="@Url.RouteUrl(u_eng)" class="Flag US">US</a>
</li>
<li>
<a href="@Url.RouteUrl(u_deu)" class="Flag DE">DE</a>
</li>
サイトを実行すると、スタート ページのリンクが正常に機能し、現在のページを指し、対応する URL に lang=xy パラメータが追加されます。
しかし、まったく同じレイアウト ファイルを使用し、パラメーターも使用する別のページに移動すると、リンクが正しく作成されません。次の URL で定義されたサブページに移動するとします。
http://localhost:1234/Stations?position=up
ページ自体は正しく表示されます。しかし、言語リンクにカーソルを合わせるかたどると、次のようになります。
http://localhost:1234/Stations?lang=1031
それ以外の
http://localhost:1234/Stations?position=up&lang=1031
ご覧のとおり、既存のパラメーターは省略されています。