我有一个SiteMap
,并且我正在使用Repeater
来生成导航菜单。我的大多数SiteMapNodes都有子节点。但是,其中一些不是。具有子节点的节点正确显示。那些仍未显示的列表框为空。我不知道如何只在有子节点时显示<ul>
,而在没有子节点时忽略它。
<asp:Repeater ID="MenuRepeater" DataSourceID="SiteMapDataSource1" EnableViewState="false" runat="server">
<ItemTemplate>
<span class="sae-dropdown"><a class="nav-link" href="<%#Eval("url") %>"><%#Eval("Title") %></a>
<ul class="css-menu">
<asp:Repeater ID="bar" DataSource='<%#Eval("ChildNodes") %>' runat="server">
<ItemTemplate>
<li><a href="<%#Eval("url") %>"><%#Eval("Title") %></a></li>
</ItemTemplate>
</asp:Repeater>
</ul>
</span>
</ItemTemplate>
</asp:Repeater>
嵌套中继器上方的<ul>
是问题所在。我在代码中放入的任何if语句似乎都不起作用。 Eval("ChildNodes")
求值为一个对象,该对象没有Count
方法或任何其他方法查看它是否为空。尝试将对象强制转换为SiteMapNode会在下面产生错误:
在此情况下未知SiteMapNode
。删除#以便找到SiteMapNode会导致Eval()
不再起作用。