【问题标题】:Passing common data into the _Layout.cshtml in ASP.Net MVC将公共数据传递到 ASP.Net MVC 中的 _Layout.cshtml
【发布时间】:2019-03-22 17:48:04
【问题描述】:

在 ASP.Net MVC 应用程序中,我试图从数据库表中生成顶部导航栏。我遵循数据库优先方法。使用实体框架

我的场景如下:

我有 3 张桌子 MainMenuSubMenuItemMenuItemMenu 表知道它是 MainMenu 和 SubMenu。根据这些细节,顶部菜单栏应该呈现在 _Layout.cshtml 页面上。

如何实现这个..?我应该为 MenuBar 创建一个局部视图还是有其他简单的方法来完成这个?

【问题讨论】:

  • 这个问题太宽泛了:“请编辑问题以将其限制在具有足够详细信息的特定问题上,以确定适当的答案。避免一次提出多个不同的问题。请参阅如何提问页面帮助澄清这个问题。”
  • 这种情况下可以使用Partial View或者Html.Action

标签: c# asp.net asp.net-mvc entity-framework


【解决方案1】:

您可以尝试使用 Foreach 循环来显示主菜单、子菜单和子菜单。

你可以像下面这样尝试非常相似

<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
    @foreach(var item in mainMenu)
    {
            <li class="dropdown">
                <a href="#" class="dropdown-toggle" data-toggle="dropdown">@item.MainMenu1<b class="caret"></b></a>
                <ul class="dropdown-menu">
                    @foreach(var subItem in item.SubMenu){
                        <li class="dropdown">
                            <a href="#" class="dropdown-toggle" data-toggle="dropdown">@subItem.SubMenu1<b class="caret"></b></a>
                            <ul class="dropdown-menu">
                                @foreach(var childItem in subItem.ChildMenu){
                                    <li>@Html.ActionLink(@childItem, "Action", "Controller")</li>
                                }
                            </ul>
                        </li> 
                    }
                </ul>
            </li>    
    }

</ul>

您可以像自己一样修复设计。 注意:使用多个对象从动作中获取数据作为数据列表

【讨论】:

  • 非常感谢@tebbe93 的回复。请告诉我如何将 item 从控制器传递到 _Layout.cshtml 我应该使用哪个控制器?如果我们需要渲染一个特定的页面,我们可以从特定的控制器方法中传递一个模型数据或 ViewBag 或其他东西到相应的视图。但是在_Layout.cshtml怎么办呢?我这样做的目的是根据用户权限生成菜单。
  • 您可以对您的家庭控制器采取部分操作并生成一个视图。内部视图采取一个部分。完成菜单设计后将部分呈现到您的布局页面或主页索引页面。根据菜单你想如何使用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-15
  • 1970-01-01
  • 1970-01-01
  • 2021-05-04
  • 2010-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多