2013-07-17 90 views
0

我使用局部渲染文化選擇器控件。該控件存儲在〜/ Views/Shared/Control.cshtml下。在三種不同語言的控件中有三個動作鏈接。在局部渲染區域時部分動作鏈接

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

當應用程序在瀏覽器中啓動,但如果我使用該控件從一個區域它訪問了錯誤的控制器我可以使用默認的頁面上此控制。是否可以告訴控件中的actionlink使用「默認」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> 

我所知道的第三個參數指向控制器,問題是,有一個HomeController也在這個區域。我可以告訴ActionLink使用哪個HomeController?

+0

在你的ActionLink的3rth參數是控制器參數,即應該夠了。你能告訴我瀏覽器顯示的呈現鏈接嗎? –

回答

0

重命名HomeControllers

0

你需要指定的路由參數的地區之一?

@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); 
    }