ASP.NET站点地图作为下拉菜单显示非子元素问题
我有一个带有单级下拉菜单的asp.net网站地图。我在母版页中使用以下代码,通过生成ASP.NET站点地图作为下拉菜单显示非子元素问题,asp.net,sitemap,drop-down-menu,Asp.net,Sitemap,Drop Down Menu,我有一个带有单级下拉菜单的asp.net网站地图。我在母版页中使用以下代码,通过生成和将它们显示为下拉菜单。它工作得很好问题是,即使某些项目没有子项目,它也会生成空项目,这会导致显示下拉图标。 如何通过检查子节点计数来停止空的生成 <!--- Menu --> <div id="horizontalcssmenu" class="horizontalcssmenu"> <asp:SiteMapDataSource
和
将它们显示为下拉菜单。它工作得很好问题是,即使某些项目没有子项目,它也会生成空项目,这会导致显示下拉图标。
如何通过检查子节点计数来停止空的
生成
<!--- Menu -->
<div id="horizontalcssmenu" class="horizontalcssmenu">
<asp:SiteMapDataSource ID="SiteMapDataSource1" ShowStartingNode="false" runat="server" />
<ul id="cssmenu1">
<li><a id="A1" href="index.aspx" runat="server">Home</a></li>
<asp:Repeater ID="foo" DataSourceID="SiteMapDataSource1" EnableViewState="false"
runat="server" onitemcommand="foo_ItemCommand">
<ItemTemplate>
<li>
<a href='<%#Eval("url") %>'><%#Eval("Title") %></a>
<ul>
<asp:Repeater ID="bar" DataSource='<%# ((SiteMapNode) Container.DataItem).ChildNodes %>' runat="server">
<ItemTemplate>
<li><a href='<%#Eval("url") %>'><%#Eval("Title") %></a></li>
</ItemTemplate>
</asp:Repeater>
</ul>
</li>
</ItemTemplate>
</asp:Repeater>
</ul>
</div>
<!-- Menu End -->
输出代码显示如下内容
<!--- Menu -->
<div id="horizontalcssmenu" class="horizontalcssmenu">
<ul id="cssmenu1">
<li><a href="index.aspx" id="ctl00_A1">Home</a></li>
<li>
<a href='/SVSS/StudentFullDetails.aspx'>Student Details</a>
<ul>
</ul>
</li>
<li>
<a href='/SVSS/StudentMonthlyAttendance.aspx'>Attendance</a>
<ul>
</ul>
</li>
<li>
<a href='/SVSS/MyNotice.aspx'>Notice</a>
<ul>
</ul>
</li>
</ul>
</div>
<!-- Menu End -->
像这样的东西怎么样:
<%if(((SiteMapNode) Container.DataItem).ChildNodes.Length > 0) { %>
<ul>
<asp:Repeater ID="bar" DataSource='<%# ((SiteMapNode) Container.DataItem).ChildNodes %>' runat="server">
<ItemTemplate>
<li><a href='<%#Eval("url") %>'><%#Eval("Title") %></a></li>
</ItemTemplate>
</asp:Repeater>
</ul>
<%}>
0){%>
有点晚,但可能会帮助其他人。
尝试设置中继器的Visible属性,如下所示
Visible="<%# ((SiteMapNode)Container.DataItem).ChildNodes.Count > 0 ? true : false %>"
Visible=“0?真:假%>”
重要的内容是->If(CType(Container.DataItem,SiteMapNode)。HasChildNodes
它有利于引导导航栏
需要为活动节点添加活动节点
<nav class="navbar navbar-expand-sm navbar-toggleable-sm bg-white navbar-light border-bottom box-shadow mb-3">
<a id="HlBrand" href="#" class="navbar-brand" title="xx">
logo
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse" role="navigation" id="navbarText">
<ul class="navbar-nav ml-auto" role="menu">
<%--<li>
<asp:HyperLink runat="server" CssClass="nav-link" ID="lnkHome" NavigateUrl="~/">Home</asp:HyperLink>
</li>--%>
<asp:Repeater runat="server" ID="menu" DataSourceID="SiteMapDataSource1">
<ItemTemplate>
<li class="nav-item dropdown">
<%--<%# If(CType(Container.DataItem, SiteMapNode).HasChildNodes, "nav-link dropdown-toggle", "nav-link")%>--%>
<asp:HyperLink ID="lnkMenuItem" CssClass='<%# If(CType(Container.DataItem, SiteMapNode).HasChildNodes, "nav-link dropdown-toggle", "nav-link")%>' data-toggle="dropdown" aria-expanded="false" aria-haspopup="true" runat="server" title='<%# Eval("description") %>' NavigateUrl='<%# Eval("Url") %>'><%# Eval("Title") %></asp:HyperLink>
<asp:Repeater ID="submenu" runat="server" DataSource="<%# CType(Container.DataItem, SiteMapNode).ChildNodes %>">
<HeaderTemplate>
<div role="menu" aria-labelledby="" class="dropdown-menu">
</HeaderTemplate>
<ItemTemplate>
<asp:HyperLink ID="lnkMenuItem" CssClass="dropdown-item" runat="server" NavigateUrl='<%# Eval("Url") %>'><%# Eval("Title") %></asp:HyperLink>
</ItemTemplate>
<FooterTemplate>
</div>
</FooterTemplate>
</asp:Repeater>
</li>
</ItemTemplate>
</asp:Repeater>
</ul>
</div>
</nav>
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="false" />
-
我早些时候试过,但没有成功。如果有错误,请将其保留在内部condition@Ajay-你也试过用“#”吗?