0

パーシャルを使用して、カルチャ チューザー コントロールをレンダリングします。コントロールは ~/Views/Shared/Control.cshtml に保存されます。コントロールには、3 つの異なる言語の 3 つのアクションリンクがあります。

@Html.ActionLink("English", "ChangeCulture", "Home",  new { lang = "en", returnUrl = this.Request.RawUrl }, null)

ブラウザでアプリを起動すると、デフォルト ページでこのコントロールを使用できますが、領域からコントロールを使用すると、間違ったコントローラにアクセスします。コントロールのアクションリンクに「デフォルト」の HomeController を使用するように指示することは可能ですか?

事前にご協力いただきありがとうございます。詳細が必要な場合は、今すぐお知らせください。

よろしく、フランク。

編集:

これは、カルチャ チューザー コントロールがレンダリングされるレイアウト ページの一部です。

    <div id="login_details">
        <div class="username">@ViewRes.SharedStrings.User: @User.Identity.Name</div>
        @ViewRes.SharedStrings.ChangePassword
        @*@Html.Partial("CultureChooserUserControl")*@
        @Html.Partial("~/Views/Shared/CultureChooserUserControl.cshtml")
    </div>

3 番目のパラメーターがコントローラーを指していることはわかっています。問題は、この領域にも HomeController があることです。どの HomeController を使用するかを ActionLink に指示できますか?

4

2 に答える 2

0

ルート パラメータで Area を指定する必要がありますか?

@Html.ActionLink("English", "ChangeCulture", "Home",  
   new {Area = string.Empty, lang = "en", returnUrl = this.Request.RawUrl }, null)

あるエリアのコントローラーからメニューを表示しようとすると、同様の問題が発生しました。

私のメニューは、MenuController からの部分ビューです。

私の _Layout.cshtml では、次のようにメニューをレンダリングしています

@Html.Action("Index", "Menu",new{Area = string.Empty})

私のMenuControllerはこれを行います...

    // GET: /Menu/
    public ActionResult Index()
    {
        var vm = new MenuViewModel();
        vm.IsLoggedIn = CurrentUser != null;
        ...
        return PartialView(vm);
    }
于 2013-12-04T10:05:56.207 に答える