如何在 _layout.cshtml 中为不同区域动态渲染局部视图?

Posted

技术标签:

【中文标题】如何在 _layout.cshtml 中为不同区域动态渲染局部视图?【英文标题】:How to dynamically render partial view inside _layout.cshtml for different areas? 【发布时间】:2019-03-07 18:57:42 【问题描述】:

我在主区域有一个布局页面(_layout.cshtml),三个区域称为员工区域,管理区域和主区域。每个区域都有自己的局部视图(侧菜单),称为_employeeSideMenu.cshtml,_adminSideMenu.cshtml ,_mainSidemenu.cshtml。 如何根据区域请求在_layout.cshtml页面中呈现sidemenu。

我接受这样的事情:

@if(Request from employee area)

    Html.Partial("_employeeSideMenu");

else if(Request from admin area)

    Html.Partial("_adminSideMenu");

else (Request from main area)

    Html.Partial("_mainSidemenu");

【问题讨论】:

【参考方案1】:

您可以使用此ViewContext.RouteData.DataTokens["area"] 获取当前区域名称,然后将结果应用到您的逻辑中。

【讨论】:

【参考方案2】:

我找到了解决这个问题的完美方法。这是-

@if(ViewContext.RouteData.DataTokens["area"] = "EmployeeArea")

    Html.Partial("_employeeSideMenu");

else if(ViewContext.RouteData.DataTokens["area"] = "AdminArea")

    Html.Partial("_adminSideMenu");

else (ViewContext.RouteData.DataTokens["area"] = "MainArea")

    Html.Partial("_mainSidemenu");

【讨论】:

以上是关于如何在 _layout.cshtml 中为不同区域动态渲染局部视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 _Layout.cshtml 页面隐藏页面上的特定元素

如何将配置设置添加到 _Layout.cshtml 共享 Razor 页面

asp.net _Layout.cshtml 仅在模型类型为 ______ 时加载脚本

_Layout.cshtml 上的本地化

如何在 ASP.NET Core Razor Pages 项目的 _layout.cshtml 文件中使用 Razor Page Using Entity Framework 作为部分视图?

模型不会从剃刀页面中的 _Layout.cshtml 页面中的 _Footer.cshtml 部分视图绑定