2009-11-25 3 views
1

ASP.Net의 메뉴 컨트롤에 사이트 맵 파일을 바인딩 할 때 많은 경험이 없으며 가능한 경우 (많은 사용자 지정 배관 작업없이)보고 싶었습니다..sitemap 파일로 ASP.Net 메뉴 제어

깨끗한 마크 업을 얻으려면 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 파일이 있기를 바랍니다. –

+1

웹에는 "가로 CSS 탐색"을 다루는 많은 예제가 있습니다. 대부분은 중첩 된 목록을 사용하여 상위 하위 relationshipihp를 작성합니다. 내 경우에는 다른 레이어 위에 겹쳐서 사용했습니다. http://www.alvit.de/css-showcase/css-navigation-techniques-showcase.php – Josh

+1

이것은 진짜입니다 (튜토리얼 3 : 스콧의 마스터 페이지와 사이트 네비게이션 Mitchell) : http://msdn.microsoft.com/en-us/library/aa581782.aspx '3 단계 : 사이트 맵에 따라 메뉴 표시'를 참조하십시오. 그냥 아름답다! :) –

답변

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