簡體   English   中英

在站點導航中顯示第二級站點地圖

[英]show second level of sitemap in site navigation

我有這樣的站點地圖:

<?xml version="1.0" encoding="utf-8" ?>
<siteMap>
  <siteMapNode title="Home" >
    <siteMapNode title="Services" >
      <siteMapNode title="Training" url="~/Training.aspx"/>
    </siteMapNode>
  </siteMapNode>
</siteMap>

現在我想在單獨的部門中顯示第二級站點地圖。

<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="false" />
<asp:Repeater runat="server" ID="menu" DataSourceID="SiteMapDataSource1"> 
    <asp:HyperLink ID="menu_items" runat="server" NavigateUrl='<%# Eval("Url") %>'><%# Eval("Title") %></asp:HyperLink>
</asp:Repeater>
<div class="separator"></div>
//Here must child Node(s) displayed
//e.g. return <a href="~Training.aspx">Training</a>

要顯示基本報告,過濾報告和自定義格式化SiteMapNodes的子項,我們可以將另一個Repeater添加到初始Repeater的ItemTemplate中。 第二個Repeater將綁定到SiteMapNode實例的ChildNodes屬性,如下所示:

<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>

這兩個Repeater導致以下標記(為簡潔起見,已刪除了一些標記):

<li>
    <a href="/Code/BasicReporting/Default.aspx">Basic Reporting</a>
    <ul>
       <li>
          <a href="/Code/BasicReporting/SimpleDisplay.aspx">Simple Display</a>
       </li>
       <li>
          <a href="/Code/BasicReporting/DeclarativeParams.aspx">Declarative Parameters</a>
       </li>
       <li>
          <a href="/Code/BasicReporting/ProgrammaticParams.aspx">Setting Parameter Values</a>
       </li>
    </ul>
</li>

<li>
    <a href="/Code/Filtering/Default.aspx">Filtering Reports</a>
    ...
</li>

<li>
    <a href="/Code/CustomFormatting/Default.aspx">Customized Formatting</a>
    ...
</li>

取自: http//msdn.microsoft.com/en-us/library/aa581781.aspx

您需要在新的SiteMapDataSource中指定起始節點,即使我不確定,它是否是最佳方法。 我相信最好一次讀取代碼隱藏中的所有節點,然后使用此源將實際頁面填充到您想要的數據。 這樣做的原因是我不喜歡混合邏輯(將一些數據源綁定到元素當然是邏輯部分)與演示文稿(html等)。 是的,用數據源向aspx文件發送垃圾郵件很容易,但我不相信它是最好的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM