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 吗?

4

2 回答 2

0

重命名 HomeController 之一

于 2013-07-17T12:10:31.410 回答
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 回答