【问题标题】:ActionLink in Partial when Partial is rendered in an area当在一个区域中呈现 Partial 时,ActionLink in Partial
【发布时间】:2013-07-17 05:51:03
【问题描述】:

我使用部分来呈现文化选择器控件。该控件存储在 ~/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 吗?

【问题讨论】:

  • actionlink 中的第三个参数是控制器参数,应该足够了。你能告诉我浏览器显示的渲染链接吗?

标签: model-view-controller actionlink areas


【解决方案1】:

重命名 HomeControllers 之一

【讨论】:

    【解决方案2】:

    需要在路由参数中指定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);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 2012-09-04
      • 2013-05-10
      • 1970-01-01
      相关资源
      最近更新 更多