SiteMap Klasa

Definicja

Klasa SiteMap jest reprezentacją w pamięci struktury nawigacji dla lokacji, która jest dostarczana przez co najmniej jednego dostawcę mapy witryny. Klasa ta nie może być dziedziczona.

public ref class SiteMap abstract sealed
public static class SiteMap
type SiteMap = class
Public Class SiteMap
Dziedziczenie
SiteMap

Przykłady

Ten rozdział zawiera dwa przykłady kodu. W pierwszym przykładzie kodu pokazano, jak zadeklarować dostawcę mapy witryny w pliku Web.config. W drugim przykładzie kodu pokazano, jak używać SiteMap obiektu.

Poniższy przykład kodu to sekcja konfiguracji Web.config, która pokazuje, jak XmlSiteMapProvider obiekt jest zadeklarowany jako obiekt domyślny 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>  

W poniższym przykładzie kodu pokazano, jak używać SiteMap obiektu przez uzyskanie dostępu do jego statycznych elementów członkowskich w celu wyświetlenia informacji o właściwościach RootNode i CurrentNode . Porównaj je z danymi wyjściowymi renderowaną przez kontrolkę 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>

Uwagi

Mapy witryny są używane w połączeniu SiteMapDataSourcez kontrolkami , SiteMapPathi innymi kontrolkami w celu renderowania efektywnego interfejsu nawigacyjnego dla użytkowników w celu nawigowania po witrynie sieci Web. Obiekt SiteMap jest składnikiem infrastruktury nawigacji ASP.NET lokacji, która zapewnia dostęp do informacji mapy witryny tylko do odczytu dla deweloperów stron i kontroli przy użyciu nawigacji i SiteMapDataSource kontrolek. Inne składniki infrastruktury nawigacji witryny ASP.NET obejmują SiteMapProvider klasy i XmlSiteMapProvider , plik Web.sitemap i różne kontrolki, które współpracują z klasą SiteMap , taką jak kontrolka SiteMapPath , do renderowania zawartości i menu.

Funkcja SiteMap ma kilka funkcji:

  • Udostępnia węzeł główny hierarchii nawigacji lokacji (może istnieć tylko jeden węzeł główny).

  • Określa, który dostawca mapy witryny jest podmiotem zabezpieczeń lub domyślnym dostawcą.

  • Śledzi wszystkie obiekty dostawcy, które są używane do utworzenia obiektu SiteMap.

Zasadniczo element SiteMap jest kontenerem dla hierarchicznej kolekcji SiteMapNode obiektów. Jednak obiekt SiteMap nie zachowuje relacji między węzłami, a raczej deleguje je do dostawców mapy lokacji. Element SiteMap działa jako interfejs do informacji nawigacji lokacji (w postaci SiteMapNode obiektów), które są przechowywane przez tych dostawców mapy witryny. Śledzi on dostawców, z których może uzyskiwać dostęp do danych nawigacji witryny i uwidaczniać swoją Providers kolekcję. Dostawca może przechowywać informacje o mapie witryny w dowolny sposób — o ile rozszerza klasę SiteMapProvider abstrakcyjną, SiteMap można ją pomyślnie zainicjować.

Domyślnym dostawcą klasy SiteMap jest XmlSiteMapProvider klasa, która współdziała z plikiem konfiguracji XML Web.sitemap. Można jednak napisać własny SiteMapProvider obiekt i użyć go do zainicjowania mapy witryny dla witryny. Aby zapoznać się z przykładem niestandardowego dostawcy mapy witryny, zobacz SiteMapProvider.

Zostanie określona domyślna konfiguracja mapy witryny, która zarządza konfiguracją nawigacji lokacji. Tę konfigurację można zastąpić w pliku Web.config, jeśli zdecydujesz się napisać własnego dostawcę mapy witryny.

Klasa SiteMap oferuje tylko statyczne składowe pod kątem wydajności i można uzyskać do niej dostęp w dowolnym momencie w danej witrynie za pomocą formularza internetowego lub kontrolki serwera sieci Web.

Właściwości

CurrentNode

Pobiera kontrolkę reprezentującą SiteMapNode aktualnie żądaną stronę.

Enabled

Pobiera wartość logiczną wskazującą, czy dostawca mapy lokacji jest określony w pliku Web.config i czy dostawca mapy lokacji jest włączony.

Provider

Pobiera obiekt domyślny SiteMapProvider dla bieżącej mapy witryny.

Providers

Pobiera kolekcję tylko do odczytu nazwanych SiteMapProvider obiektów, które są dostępne dla SiteMap klasy.

RootNode

SiteMapNode Pobiera obiekt reprezentujący stronę najwyższego poziomu struktury nawigacji dla witryny.

Zdarzenia

SiteMapResolve

Występuje, gdy CurrentNode dostęp do właściwości jest uzyskiwany.

Dotyczy

Zobacz też