ASP.NET 站点地图不使用 asp:repeater 显示子节点

发布于 2024-10-12 06:22:51 字数 1088 浏览 3 评论 0原文

上面是我的 ASP.NET 代码

<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />                
<ul>
    <asp:Repeater runat="server" ID="menuRepeater" DataSourceID="SiteMapDataSource1">
        <ItemTemplate>
            <li>
                <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("Url") %>' Text='<%# Eval("Title") %>' />
            </li>
        </ItemTemplate>
    </asp:Repeater>
</ul>

,这里是站点地图

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode url="~/Default.aspx" title="Homepage">
    <siteMapNode url="~/Login.aspx" title="Login"/>
    <siteMapNode url="~/News.aspx" title="News"/>
    <siteMapNode url="~/Preferences.aspx" title="Preferences"/>
  </siteMapNode>
</siteMap>

上面代码的问题是它只显示父节点 (~/Default.aspx),但是当我使用 Menu 或 TreeView 控件并指定 SiteMapDataSource 时,一切正常适当地。你能指出我错在哪里吗?

The above is my ASP.NET code

<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />                
<ul>
    <asp:Repeater runat="server" ID="menuRepeater" DataSourceID="SiteMapDataSource1">
        <ItemTemplate>
            <li>
                <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("Url") %>' Text='<%# Eval("Title") %>' />
            </li>
        </ItemTemplate>
    </asp:Repeater>
</ul>

and here is the sitemap

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode url="~/Default.aspx" title="Homepage">
    <siteMapNode url="~/Login.aspx" title="Login"/>
    <siteMapNode url="~/News.aspx" title="News"/>
    <siteMapNode url="~/Preferences.aspx" title="Preferences"/>
  </siteMapNode>
</siteMap>

The problem with above code is that it only shows the parent node (~/Default.aspx), however when I use the Menu or TreeView control and specify the SiteMapDataSource, everything works properly. Can you please spot where am I wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

初见你 2024-10-19 06:22:51

在 SiteMapDataSource 标记中设置 ShowStartingNode="false"。

set ShowStartingNode="false" in SiteMapDataSource markup.

看轻我的陪伴 2024-10-19 06:22:51

Vijay 的建议和评论链接最终也为我提供了答案。

摘要版本是嵌套中继器,以及 ShowStartingNode=false 设置。为了后代的缘故,来自上面链接的代码:

<asp:SiteMapDataSource ID="siteMapDataSource1" runat="server" ShowStartingNode="false" />
<asp:Repeater runat="server" ID="menu" DataSourceID="SiteMapDataSource1">
    <ItemTemplate>
        <li>
            <asp:HyperLink runat="server"
             NavigateUrl='<%# Eval("Url") %>'>
             <%# Eval("Title") %></asp:HyperLink>

            <asp:Repeater runat="server"
                DataSource='<%# ((SiteMapNode) Container.DataItem).ChildNodes %>'>
                <HeaderTemplate>
                    <ul>
                </HeaderTemplate>

                <ItemTemplate>
                    <li>
                        <asp:HyperLink runat="server"
                         NavigateUrl='<%# Eval("Url") %>'>
                         <%# Eval("Title") %></asp:HyperLink>
                    </li>
                </ItemTemplate>

                <FooterTemplate>
                    </ul>
                </FooterTemplate>
            </asp:Repeater>
        </li>
    </ItemTemplate>
</asp:Repeater>

Vijay's suggestion and comment link eventually provided the answer for me as well.

The summary version is nested repeaters, as well as the ShowStartingNode=false setting. For posterity's sake, code from the above link:

<asp:SiteMapDataSource ID="siteMapDataSource1" runat="server" ShowStartingNode="false" />
<asp:Repeater runat="server" ID="menu" DataSourceID="SiteMapDataSource1">
    <ItemTemplate>
        <li>
            <asp:HyperLink runat="server"
             NavigateUrl='<%# Eval("Url") %>'>
             <%# Eval("Title") %></asp:HyperLink>

            <asp:Repeater runat="server"
                DataSource='<%# ((SiteMapNode) Container.DataItem).ChildNodes %>'>
                <HeaderTemplate>
                    <ul>
                </HeaderTemplate>

                <ItemTemplate>
                    <li>
                        <asp:HyperLink runat="server"
                         NavigateUrl='<%# Eval("Url") %>'>
                         <%# Eval("Title") %></asp:HyperLink>
                    </li>
                </ItemTemplate>

                <FooterTemplate>
                    </ul>
                </FooterTemplate>
            </asp:Repeater>
        </li>
    </ItemTemplate>
</asp:Repeater>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文