다음을 통해 공유


방법: 비계층적 웹 서버 컨트롤에서 사이트 맵 데이터 표시

업데이트: 2007년 11월

사이트 맵 데이터는 기본적으로 계층적입니다. 즉, 각 노드에 0개 이상의 자식 노드가 포함될 수 있습니다. TreeViewMenu 컨트롤은 계층적 데이터와 함께 사용하도록 디자인되었습니다. 그러나 DropDownList, CheckBoxList 및 선형 또는 평면 형식으로 데이터를 표시하는 다른 컨트롤 등의 비계층적 컨트롤에도 사이트 맵 데이터를 바인딩할 수 있습니다.

참고:

SiteMapPath 컨트롤과 INavigateUIData 인터페이스를 지원하는 컨트롤에서만 사이트 맵 노드를 링크로 렌더링합니다.

예제

다음 코드 예제에서는 DropDownList 컨트롤을 사용하여 Web.sitemap 파일의 사이트 맵 데이터를 표시합니다.

클라이언트에서 드롭다운 목록의 항목을 선택하면 브라우저가 선택된 페이지로 리디렉션됩니다. 이 작업을 수행하기 위해 OnSelectedIndexChanged 이벤트 처리기의 Redirect 메서드가 호출됩니다.

이 코드 예제를 마스터 페이지에 삽입하면 SiteMapDataSource 컨트롤의 StartFromCurrentNode 속성으로 인해 항상 현재 실행 중인 페이지에서 시작되는 사이트 맵이 드롭다운 목록에 표시됩니다.

<%@ Page Language="VB"  AutoEventWireup="True" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script >
  Public Sub _OnSelectedIndexChanged(ByVal Sender As Object, ByVal e As EventArgs)
    Response.Redirect(DropDownList1.SelectedItem.Value)
  End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" >
    <div>
      <asp:SiteMapDataSource ID="SiteMapDataSource1" Runat="Server"
          StartFromCurrentNode="true"
          ShowStartingNode="false" />
      <asp:DropDownList ID="DropDownList1" Runat="Server" 
          DataSourceID="SiteMapDataSource1"
          AutoPostBack="True" 
          DataTextField="Title" 
          DataValueField="Url"
          OnSelectedIndexChanged="_OnSelectedIndexChanged" >
      </asp:DropDownList>
    </div>
    </form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script >
  void _OnSelectedIndexChanged(Object sender, EventArgs e)
  { 
    Response.Redirect(DropDownList1.SelectedItem.Value);
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
    <title>DropDownList Bound to SiteMapDataSource</title>
</head>
<body>
    <form id="form1" >
    <div>
      <asp:SiteMapDataSource ID="SiteMapDataSource1" Runat="Server"
          StartFromCurrentNode="true"
          ShowStartingNode="false" />
      <asp:DropDownList ID="DropDownList1" Runat="Server" 
          DataSourceID="SiteMapDataSource1"
          AutoPostBack="True" 
          DataTextField="Title" 
          DataValueField="Url"
          OnSelectedIndexChanged="_OnSelectedIndexChanged" >
      </asp:DropDownList>
    </div>
    </form>
</body>
</html>

페이지에 자식 노드가 없으면 드롭다운 목록은 비어 있습니다. 클라이언트에서 Web.sitemap 파일에 설정된 URL 속성이 없는 항목을 선택하면 클라이언트가 응용 프로그램의 홈 페이지로 리디렉션됩니다.

코드 컴파일

  • 이 예제에는 코드 예제가 포함된 ASP.NET 웹 페이지를 참조하는 유효한 Web.sitemap 파일이 필요합니다. Web.sitemap 파일의 노드 중 하나에 나열되지 않은 파일에 이 예제 코드를 넣은 경우 컨트롤에서 다음 속성을 제거합니다.

    StartFromCurrentNode="true"
    

참고 항목

작업

방법: SiteMapDataSource 웹 서버 컨트롤로 검색되는 노드 필터링

개념

ASP.NET 사이트 탐색 개요

ASP.NET 사이트 맵

ASP.NET 사이트 탐색 보안

데이터 액세스 보안

기타 리소스

호스팅된 환경에서의 ASP.NET 응용 프로그램 보안