asp:Repeater

时间:2019-07-16 11:05:16

标签: c# asp.net

我有一个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()不再起作用。

0 个答案:

没有答案