C# 如何使用SiteMap创建三级ASP.NET菜单?

C# 如何使用SiteMap创建三级ASP.NET菜单?,c#,asp.net,menu,sitemap,C#,Asp.net,Menu,Sitemap,我想创建一个三级菜单,我现在有一个递归函数,可以使用三级菜单。但问题是如何输出第三个杠杆?使用两个中继器,我通过ChildNodes属性获得了前两个级别。但这只给了我第二个层次。如果a想要第三级怎么办?下面是示例代码。我如何获得第三个级别?:) 这里是第三中继器吗? 我将使用中继器的OnItemCreateEvent来注册每个中继器的OnItemDataBound事件,然后相应地绑定数据。asp:菜单控件是否不合适?为什么选择repeaters?我将创建一个自定义服务器控件并递归解析站点

我想创建一个三级菜单,我现在有一个递归函数,可以使用三级菜单。但问题是如何输出第三个杠杆?使用两个中继器,我通过ChildNodes属性获得了前两个级别。但这只给了我第二个层次。如果a想要第三级怎么办?下面是示例代码。我如何获得第三个级别?:)


这里是第三中继器吗?




我将使用中继器的OnItemCreateEvent来注册每个中继器的OnItemDataBound事件,然后相应地绑定数据。asp:菜单控件是否不合适?为什么选择repeaters?

我将创建一个自定义服务器控件并递归解析站点地图。这将使您能够更好地控制渲染,并允许您为站点地图节点指定其他自定义属性。

这已经完成,我已经获得了一个SiteMapProvider类,该类继承自StaticSiteMapProvider,并以递归方式构建站点地图。但问题是如何用三个级别渲染它?菜单控件不是创建了糟糕的表格之类的吗?我想这就是它第一次被转储的原因:)我建议创建一个自定义服务器控件,而不是站点地图提供程序。对于简单的站点地图,ASP.NET菜单控件可以正常工作。使用CSS友好适配器将菜单呈现为列表。
<asp:Repeater ID="FirstLevel" DataSourceID="SiteMapDataSource" runat="server" EnableViewState="false">
                <ItemTemplate>
                    <li class="top">
                        <a href='/About/<%#Eval("Title")%>.aspx' class="top_link"><span class="down"><%#Eval("Title")%></span><!--[if gte IE 7]><!--></a><!--<![endif]-->
                        <asp:Repeater runat="server" ID="SecondLevel" DataSource='<%#((SiteMapNode)Container.DataItem).ChildNodes%>'>
                            <HeaderTemplate><!--[if lte IE 6]><table><tr><td><![endif]--><ul class="sub"></HeaderTemplate>
                            <ItemTemplate>
                                <li>
                                    <a href='<%#((string)Eval("Url")).Replace("~", "")%>' style="text-align: left;"><%#Eval("Title")%></a>

                                    Third repeater here?

                                </li>
                            </ItemTemplate>
                            <FooterTemplate></ul><!--[if lte IE 6]></td></tr></table></a><![endif]--></FooterTemplate>
                        </asp:Repeater>
                    </li>
                </ItemTemplate>
            </asp:Repeater>