おはようございます。できるだけわかりやすく説明します。
このページは特定のアカウントの情報を返しますが、複数のアカウントを使用しているユーザーもいるため、それらを切り替える機能を提供したいと考えています。
現在、ルートを次のように設定しています。
{controller}/{action}/{accountcode}
{accountcode}
空にすることができ、これはアクションでチェックされ、デフォルト コードに設定されます。
今のところ問題なく動作しているので、次の URL にアクセスしてください。
{controller}/{action} OR {controller}/{action}/{accountcode}
そのため、アクセスできるリストを提供するドロップダウン リストを設定し、選択すると、その特定のアカウントの URL に移動します。
これは、ドロップダウンリストの値を取得して追加する{controller}/{action}
ため、移動して選択するとうまく機能します。window.location.href
ただし、{controller}/{action}/{accountcode}
ドロップダウンのリダイレクト先でアカウントを選択すると、私のみすぼらしい JavaScript ロジックのために、別のアカウント コードを追加しようとします。
パラメーターなしで現在のアクションへの URL を取得して、自分で定義できるようにする方法を探していると思います。この機能はレイアウト ページにあるため、Url Helper または Route Helper メソッドを使用できないため、ここで苦労しています。つまり、現在のページのアクションを取得する必要があります。
明確にすることを望んでいる私のコードは次のとおりです。
@if ((ViewBag.Accounts ?? new List<string>{"none"}).Count > 1)
{
@Html.DropDownList("accounts", new SelectList(ViewBag.Accounts, ViewBag.AccountCode))
}
$(function() {
$("#accounts").change(function () {
window.location.href = window.location.href + "/" + $(this).val();
});
});
乾杯!