2009-11-25 37 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" />