共用方式為


SiteMap 類別

定義

SiteMap 類別是存放於記憶體之網站巡覽結構的表現方式,由一或多個網站導覽提供者所提供。 此類別無法獲得繼承。

public ref class SiteMap abstract sealed
public static class SiteMap
type SiteMap = class
Public Class SiteMap
繼承
SiteMap

範例

本節包含兩個程式碼範例。 第一個程式代碼範例示範如何在 Web.config 檔案中宣告網站地圖提供者。 第二個 SiteMap 程式代碼範例示範如何使用 物件。

下列程式代碼範例是 Web.config 組態區段,示範如何將 XmlSiteMapProvider 物件宣告為默認 SiteMapProvider 物件。

<siteMap defaultProvider="MyXmlSiteMapProvider" enabled="true">  
  <providers>  
    <add name="MyXmlSiteMapProvider"  
      description="The site map provider that reads in the .sitemap XML files."  
      type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"  
      siteMapFile="my.sitemap" />  
  </providers>  
</siteMap>  

下列程式代碼範例示範如何藉由存取其靜態成員來顯示 和 CurrentNode 屬性的相關信息RootNode,以使用 SiteMap 物件。 將它與控件所 SiteMapPath 轉譯的輸出進行比較。

<%@ Page language="c#"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
    // Examine the CurrentNode, and navigate the SiteMap relative to it.
    Response.Write(SiteMap.CurrentNode.Title + "<br />");
    Response.Write("<font COLOR='red'>" + SiteMap.CurrentNode.Url + "</font><br />");

    // What nodes are children of the CurrentNode?
    if (SiteMap.CurrentNode.HasChildNodes) {
        IEnumerator childNodesEnumerator = SiteMap.CurrentNode.ChildNodes.GetEnumerator();
        while (childNodesEnumerator.MoveNext()) {
            // Prints the Title of each node.
            Response.Write(childNodesEnumerator.Current.ToString() + "<br />");
        }
    }
    Response.Write("<hr />");

    // Examine the RootNode, and navigate the SiteMap relative to it.
    Response.Write(SiteMap.RootNode.Title + "<br />");
    Response.Write(SiteMap.RootNode.Url + "<br />");

    // What nodes are children of the RootNode?
    if (SiteMap.RootNode.HasChildNodes) {
        IEnumerator rootNodesChildrenEnumerator = SiteMap.RootNode.ChildNodes.GetEnumerator();
        while (rootNodesChildrenEnumerator.MoveNext()) {
            // Prints the Title of each node.
            Response.Write(rootNodesChildrenEnumerator.Current.ToString() + "<br />");
        }
    }

}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="Form1" runat="server">
      <asp:SiteMapPath
          runat="server"
        ID="SiteMapPath1"
        ShowToolTips="false"/>
    </form>
  </body>
</html>
<%@ Page language="VB"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
Private Sub Page_Load(sender As Object, e As System.EventArgs)

  ' Examine the CurrentNode, and navigate the SiteMap relative to it.
  Response.Write(SiteMap.CurrentNode.Title & "<br />")
  Response.Write("<font COLOR='red'>" & SiteMap.CurrentNode.Url & "</font><br />")

  ' What nodes are children of the CurrentNode?
  If (SiteMap.CurrentNode.HasChildNodes) Then
      Dim childNodesEnumerator As IEnumerator = SiteMap.CurrentNode.ChildNodes.GetEnumerator()

      While (childNodesEnumerator.MoveNext())
          ' Prints the Title of each node.
          Response.Write(childNodesEnumerator.Current.ToString() & "<br />")
      End While

  End If
  Response.Write("<hr />")

  ' Examine the RootNode, and navigate the SiteMap relative to it.
  Response.Write(SiteMap.RootNode.Title & "<br />")
  Response.Write(SiteMap.RootNode.Url & "<br />")

  ' What nodes are children of the RootNode?
  If (SiteMap.RootNode.HasChildNodes) Then
      Dim rootNodesChildrenEnumerator As IEnumerator = SiteMap.RootNode.ChildNodes.GetEnumerator()
      While (rootNodesChildrenEnumerator.MoveNext())
          ' Prints the Title of each node.
          Response.Write(rootNodesChildrenEnumerator.Current.ToString() & "<br />")
      End While
  End If

End Sub ' Page_Load
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="Form1" runat="server">
        <asp:SiteMapPath
            runat="server"
          ID="SiteMapPath1"
          ShowToolTips="false"/>

    </form>
  </body>
</html>

備註

網站地圖會與 SiteMapDataSourceSiteMapPath和其他控件搭配使用,以轉譯有效的導覽介面,讓使用者瀏覽網站。 SiteMap對像是 ASP.NET 網站導覽基礎結構的元件,可讓您使用導覽和SiteMapDataSource控件,存取頁面和控件開發人員的只讀網站地圖資訊。 ASP.NET 網站導覽基礎結構的其他元件包括 SiteMapProviderXmlSiteMapProvider 類別、Web.sitemap 檔案,以及使用 SiteMap 類別的各種控件,例如 SiteMapPath 控件來轉譯內容和功能表。

SiteMap有數個函式:

  • 它提供網站導覽階層的根節點, (只有一個根節點) 。

  • 它會識別哪些網站地圖提供者是主體或預設提供者。

  • 它會追蹤用來建立 SiteMap的所有提供者物件。

基本上, SiteMap 是 對象階層式集合的 SiteMapNode 容器。 不過, SiteMap 不會維護節點之間的關聯性,而是將它委派給網站地圖提供者。 做 SiteMap 為網站導覽資訊的介面, (這些網站地圖提供者所持有的物件) 形式 SiteMapNode 。 它會追蹤可從中存取網站導覽數據的提供者,並公開其 Providers 集合。 只要提供者擴充 SiteMapProvider 抽象類,就可以以任何方式儲存其網站地圖資訊, SiteMap 就可以從中成功初始化類別。

類別的預設提供者 SiteMapXmlSiteMapProvider 類別,其適用於 XML 組態檔 Web.sitemap。 不過,您可以撰寫自己的 SiteMapProvider 物件,並用它來初始化網站的網站地圖。 如需自訂網站地圖提供者的範例,請參閱 SiteMapProvider

會指定管理網站導覽組態的默認網站地圖組態。 您可以選擇撰寫自己的網站地圖提供者,在 Web.config 檔案中覆寫此組態。

類別 SiteMap 僅提供靜態成員的效能,而且可以隨時從 Web Form 或 Web 伺服器控制項存取指定網站。

屬性

CurrentNode

取得 SiteMapNode 控制項,表示目前要求的網頁。

Enabled

取得布林值,指出 Web.config 檔案中是否已指定網站導覽提供者,以及網站導覽提供者是否已啟用。

Provider

取得目前網站導覽的預設 SiteMapProvider 物件。

Providers

取得名稱為 SiteMapProvider 物件的唯讀集合,這些物件可用於 SiteMap 類別。

RootNode

取得 SiteMapNode 物件,表示網站巡覽結構最上層網頁。

事件

SiteMapResolve

當存取 CurrentNode 屬性時發生。

適用於

另請參閱