Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC–;数据库驱动菜单_Asp.net Mvc_Menu - Fatal编程技术网

Asp.net mvc ASP.NET MVC–;数据库驱动菜单

Asp.net mvc ASP.NET MVC–;数据库驱动菜单,asp.net-mvc,menu,Asp.net Mvc,Menu,我有一个数据库菜单结构,我想将其添加到site.master文件中 我已经研究了StackOverflow的其他问题,但无法在我的网站上实现 如何将用户控件添加到Site.Master文件 Menu.ascx <%foreach (MainMenuSort mainMenuSort in (List<MainMenuSort>)ViewData["MainMenuSortListDisplay"]) { %> <li><%=

我有一个数据库菜单结构,我想将其添加到site.master文件中

我已经研究了StackOverflow的其他问题,但无法在我的网站上实现

如何将用户控件添加到Site.Master文件

Menu.ascx

<%foreach (MainMenuSort mainMenuSort in (List<MainMenuSort>)ViewData["MainMenuSortListDisplay"])
      { %>
         <li><%= Html.Encode(mainMenuSort.MainMenuId.MainMenuName)%></li>
         <%foreach (SubMenuSort subMenuSort in (List<SubMenuSort>)ViewData["SubMenuSortListDisplay"])
           {%>
            <%if (mainMenuSort.MainMenuId.Id == subMenuSort.SubMenuId.MainMenu.Id)
              { %>
              <li><%= Html.Encode(subMenuSort.SubMenuId.SubMenuName)%></li>
            <%} %>
         <%} %>
      <%}%>


  • 您需要在母版页中使用Html.RenderPartial方法

    在调用使用母版页的视图的任何操作中,都需要设置MainMenuSortListDisplay和SubMenuSortListDisplay视图数据键

    在你的主人使用这个

    <% Html.RenderPartial("~/Views/Shared/Menu.ascx");
    
    设置此键后,母版页可以使用RenderPartial的重载,如下所示

    <% Html.RenderPartial(
        "~/View/Shared/Menu.ascx", 
        (MenuModel)ViewData["MenuPartialData"]); %>
    
    
    
    这假设您的分部是MenuModel类的强类型。然后在部分中,您可以使用稍微重写代码的模型

    <% foreach (MainMenuSort mainMenuSort in Model.OuterList) { %>
         <li><%= Html.Encode(mainMenuSort.MainMenuId.MainMenuName)%></li>
         <% foreach (SubMenuSort subMenuSort in Model.InnerList) {%>            
            <%if (mainMenuSort.MainMenuId.Id == subMenuSort.SubMenuId.MainMenu.Id)  
            { %>              
               <li><%= Html.Encode(subMenuSort.SubMenuId.SubMenuName)%></li>
          <%} %>
         <%} %>      
        <%}%>
    
    
    
  • 希望这对你有所帮助

    <% Html.RenderPartial("Menu") %>
    
    
    

    编辑:更正了一个输入错误

    你也可以作为一个HTMLHelper来做,在母版中只需调用。然后,在HTMLHelper中,您拥有获取数据库记录并循环使用它们的代码。这是我找到的一个帮助你开始的方法。请注意我的评论,因为提供的代码示例中有一个bug。我仍然在处理菜单的子项时遇到问题,我想我需要一个递归函数或其他东西???

    借助于此。我可以在site.master页中显示菜单。

    谢谢。正在学习ASP.NET MVC,并已添加到site.master页,但不理解您的意思:“您需要在调用使用母版页的视图的任何操作中设置MainMenuSortListDisplay和SubMenu ListDisplay视图数据键。”您可以在控制器类中使用ActionResult方法调用该页。在此方法中,您需要设置ViewData键,例如ViewData[“SubMenuSortListDisplay”]=SomeListPreferly,如果您仍然卡住,请返回:-)抱歉,仍然无法显示菜单。你可以发布任何链接到示例代码吗?谢谢。谢谢你发布示例代码。菜单现在显示在site.master页中。我在Site.master页面中使用了一个部分请求,并遵循该请求。谢谢。谢谢你发布这个链接。我使用了部分请求,并遵循
    <% foreach (MainMenuSort mainMenuSort in Model.OuterList) { %>
         <li><%= Html.Encode(mainMenuSort.MainMenuId.MainMenuName)%></li>
         <% foreach (SubMenuSort subMenuSort in Model.InnerList) {%>            
            <%if (mainMenuSort.MainMenuId.Id == subMenuSort.SubMenuId.MainMenu.Id)  
            { %>              
               <li><%= Html.Encode(subMenuSort.SubMenuId.SubMenuName)%></li>
          <%} %>
         <%} %>      
        <%}%>
    
    <% Html.RenderPartial("Menu") %>