部分在区域中呈现时,部分中的ActionLink

时间:2013-07-17 05:51:04

标签: model-view-controller actionlink areas

我使用partial来渲染文化选择器控件。控件存储在〜/ 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?

2 个答案:

答案 0 :(得分:0)

重命名其中一个HomeControllers

答案 1 :(得分: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);
    }