C# 使用下拉菜单制作动态菜单

C# 使用下拉菜单制作动态菜单,c#,asp.net,C#,Asp.net,我目前有如下动态菜单: <asp:Repeater runat="server" id="MenuRepeater"> <headertemplate> <div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar-inner"> <div class="container"> <a

我目前有如下动态菜单:

<asp:Repeater runat="server" id="MenuRepeater">
  <headertemplate>
       <div class="navbar navbar-inverse navbar-fixed-top">
      <div class="navbar-inner">
        <div class="container">
          <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </a>
          <a class="brand" href="#">KezBlu</a>
          <div class="nav-collapse collapse">
            <ul class="nav">
  </headertemplate>
  <itemtemplate>
     <li><a href='<%# Eval("PageFile") %>'><%# Eval("DisplayName") %></a></li>
  </itemtemplate>
  <footertemplate>
             </ul>
          </div><!--/.nav-collapse -->
        </div>
      </div>
    </div>
  </footertemplate>
 </asp:Repeater>
这很好,但我也需要子菜单

是否有一种方法可以在某种程度上为每一个项目设置重复器,或者是一种更好的方法


谢谢

您可以使用嵌套中继器:

<asp:Repeater ID="rptFirstLevel" runat="server">
    <ItemTemplate>
        <!-- first level html --> 
        <asp:Repeater ID="rptSecondLevel" DataSource='<%# DataBinder.Eval(Container.DataItem, "Children") %>' runat="server">
            <ItemTemplate>
                <!-- second level html -->
            </ItemTemplate>
        </asp:Repeater>
     </ItemTemplate>
</asp:Repeater>
并且您的
菜单
对象包含
子对象
集合。
这只是众多可能的解决方案之一。希望能有所帮助。

上次遇到这个问题时,我记得我希望使用MVC,结果只是使用嵌套中继器。你需要使用嵌套中继器。你能举个例子吗?
<asp:Repeater ID="rptFirstLevel" runat="server">
    <ItemTemplate>
        <!-- first level html --> 
        <asp:Repeater ID="rptSecondLevel" DataSource='<%# DataBinder.Eval(Container.DataItem, "Children") %>' runat="server">
            <ItemTemplate>
                <!-- second level html -->
            </ItemTemplate>
        </asp:Repeater>
     </ItemTemplate>
</asp:Repeater>
rptFirstLevel.DataSource = menu;
rptFirstLevel.DataBind();