共用方式為


HOW TO:在非階層式 Web 伺服器控制項中顯示網站導覽資料

更新:2007 年 11 月

網站導覽資料原本就是階層式的,這表示每一個節點都可以包含零個以上的子節點。TreeViewMenu 控制項專為使用階層式資料而設計。不過,您可以將網站導覽資料繫結至非階層式控制項,例如 DropDownListCheckBoxList,以及其他會顯示線性 (或扁平) 格式資料的控制項。

注意事項:

只有 SiteMapPath 控制項和支援 INavigateUIData 介面的控制項會將網站導覽節點轉譯為連結。

範例

下列程式碼範例會使用 DropDownList 控制項來顯示 Web.sitemap 檔案中的網站導覽資料。

用戶端在下拉式清單中選取項目後,瀏覽器會重新導向至選取的頁面。這個動作可藉由呼叫 OnSelectedIndexChanged 事件處理常式的 Redirect 方法來執行。

如果這個程式碼範例放在主版頁面 (Master Page) 中,則使用 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 屬性,則用戶端會重新導向至應用程式的首頁。

編譯程式碼

  • 這個範例需要有效的 Web.sitemap 檔案,它會參考含有範例程式碼範例的 ASP.NET Web 網頁。如果這個範例程式碼所在的檔案未列在 Web.sitemap 檔案內的任何一個節點中,請從控制項移除下列屬性:

    StartFromCurrentNode="true"
    

請參閱

工作

HOW TO:篩選 SiteMapDataSource Web 伺服器控制項擷取的節點

概念

ASP.NET 網站巡覽概觀

ASP.NET 網站導覽

設定 ASP.NET 網站巡覽的安全性

設定資料存取的安全性

其他資源

裝載環境中 ASP.NET 應用程式的安全性