2009-11-25 35 views
1

ASP.Net菜單控制我沒有噸的經驗與網站地圖文件綁定到ASP.Net菜單控制和想看看,如果這是可能的(沒有很多定製的管道)。與.sitemap文件

我使用CSS Friendly Adapters得到乾淨的標記。我已經準備好了CSS來創建水平導航,其中頂部欄代表主導航,下面的欄代表子導航。

基本上我想要改造這個網站地圖文件:

<?xml version="1.0" encoding="utf-8" ?> 
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > 
    <siteMapNode url="~/Default.aspx" title="Home" description=""> 
     <siteMapNode url="~/Page1.aspx" title="Page1" description=""> 
      <siteMapNode url="~/SubPage1_1.aspx" title="Sub Page 1.1" description="" /> 
      <siteMapNode url="~/SubPage1_2.aspx" title="Sub Page 1.2" description="" /> 
     </siteMapNode> 
     <siteMapNode url="~/Page2.aspx" title="Page2" description=""> 
      <siteMapNode url="~/SubPage2_1.aspx" title="Sub Page 2.1" description="" /> 
      <siteMapNode url="~/SubPage2_2.aspx" title="Sub Page 2.2" description="" /> 
     </siteMapNode> 
    </siteMapNode> 
</siteMap> 

進入這個標記:

<div class="nav" > 
    <ul class="fixed"> 
     <li><a href="Page1.aspx" class="active">Page 1</a></li> 
     <li><a href="Page2.aspx">Page 2</a></li> 
    </ul> 
</div><!-- end .nav --> 

<div class="subnav" > 
    <ul class="fixed"> 
     <li><a href="SubPage1_1.aspx" class="active">Page 1.1</a></li> 
     <li><a href="SubPage1_2.aspx">Page 1.2</a></li> 
    </ul> 
</div><!-- end .subnav --> 

凡亞導航綁定到主導航的子節點站點地圖中的節點。

是不是我的錯,期待這將是簡單的;)

+1

你能否告訴我如何將第二級導航顯示爲水平。我希望你有一個CSS文件,它以水平樣式顯示二級導航。 – 2011-05-09 10:58:19

+1

網上有很多例子,包括「水平CSS導航」。大多數使用嵌套列表來創建父子關係ihp。在我的情況下,我只是在另一個頂層使用了一層。下面是應該讓你開始一個鏈接:http://www.alvit.de/css-showcase/css-navigation-techniques-showcase.php – Josh 2011-05-09 12:52:31

+1

這是實實在在的東西(教程3:母版頁和網站導航斯科特Mitchell): http://msdn.microsoft.com/en-us/library/aa581782.aspx請參閱'步驟3:基於站點地圖顯示菜單'。真漂亮! :) – 2011-08-27 20:44:14

回答

1

因此,原來該解決方案其實很簡單。

通過使用兩個SiteMapDataSourceControls,並設置第二個的StartingNodeOffset = 1,那麼您可以通過使用兩個中繼器有效地實現兩層導航方法。

<ul> 
    <asp:Repeater ID="rptMainNavigation" runat="server" DataSourceID="SiteMapDataSourceMainNavigation"> 
     <ItemTemplate> 
      <li><a href="<%# ((SiteMapNode)Container.DataItem).Url %>"><%# ((SiteMapNode)Container.DataItem).Title %></a></li> 
     </ItemTemplate> 
    </asp:Repeater> 
</ul> 

<ul> 
    <asp:Repeater ID="rptSubNavigation" runat="server" DataSourceID="SiteMapDataSourceSubNavigation"> 
     <ItemTemplate> 
      <li><a href="<%# ((SiteMapNode)Container.DataItem).Url %>"><%# ((SiteMapNode)Container.DataItem).Title %></a></li> 
     </ItemTemplate> 
    </asp:Repeater> 
</ul> 

<asp:SiteMapDataSource ID="SiteMapDataSourceMainNavigation" runat="server" ShowStartingNode="False" /> 
<asp:SiteMapDataSource ID="SiteMapDataSourceSubNavigation" runat="server" ShowStartingNode="False" StartingNodeOffset="1" />