Freigeben über


SiteMapNode Klasse

Definition

Stellt einen Knoten in der hierarchischen Websitezuordnungsstruktur dar, z. B. die durch die SiteMap Klasse und Klassen, die die abstrakte SiteMapProvider Klasse implementieren.

public ref class SiteMapNode : ICloneable, System::Web::UI::IHierarchyData, System::Web::UI::INavigateUIData
public class SiteMapNode : ICloneable, System.Web.UI.IHierarchyData, System.Web.UI.INavigateUIData
type SiteMapNode = class
    interface ICloneable
    interface IHierarchyData
    interface INavigateUIData
Public Class SiteMapNode
Implements ICloneable, IHierarchyData, INavigateUIData
Vererbung
SiteMapNode
Implementiert

Beispiele

Dieser Abschnitt enthält zwei Codebeispiele. Im ersten Codebeispiel wird veranschaulicht, wie Sie eine neue Websitezuordnungsknotensammlung erstellen und ihr Elemente hinzufügen. Im zweiten Codebeispiel wird veranschaulicht, wie Websitezuordnungsdaten aus einer Textdatei geladen werden.

Im folgenden Codebeispiel wird veranschaulicht, wie der SiteMapNodeCollection Konstruktor zum Erstellen einer neuen SiteMapNodeCollection Auflistung verwendet und anschließend elemente mit der Add Methode hinzugefügt wird.

// The LoadSiteMapData() method loads site navigation
// data from persistent storage into a DataTable.
DataTable siteMap = LoadSiteMapData();

// Create a SiteMapNodeCollection.
SiteMapNodeCollection nodes = new SiteMapNodeCollection();

// Create a SiteMapNode and add it to the collection.
SiteMapNode tempNode;
DataRow row;
int index = 0;

while (index < siteMap.Rows.Count)
{

    row = siteMap.Rows[index];

    // Create a node based on the data in the DataRow.
    tempNode = new SiteMapNode(SiteMap.Provider,
                                row["Key"].ToString(),
                                row["Url"].ToString());

    // Add the node to the collection.
    nodes.Add(tempNode);
    ++index;
}
' The LoadSiteMapData() Function loads site navigation
' data from persistent storage into a DataTable.

Dim siteMapData As DataTable
siteMapData = LoadSiteMapData()

' Create a SiteMapNodeCollection.
Dim nodes As New SiteMapNodeCollection()

' Create a SiteMapNode and add it to the collection.
Dim tempNode As SiteMapNode
Dim row As DataRow
Dim index As Integer
index = 0

While (index < siteMapData.Rows.Count)

    row = siteMapData.Rows(index)

    ' Create a node based on the data in the DataRow.
    tempNode = New SiteMapNode(SiteMap.Provider, row("Key").ToString(), row("Url").ToString())

    ' Add the node to the collection.
    nodes.Add(tempNode)
    index = index + 1
End While

Im folgenden Codebeispiel wird veranschaulicht, wie die SimpleTextSiteMapProvider Parsen einer Textdatei, die Websitezuordnungsdaten in durch Trennzeichen getrennten Zeichenfolgen enthält. Ein neues SiteMapNode Objekt wird den internen Nachverfolgungsauflistungen der Klasse für jede Zeile hinzugefügt, die aus der Datei gelesen wird.

Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die SiteMapProvider Klasse bereitgestellt wird.

protected virtual void LoadSiteMapFromStore()
{
  string pathToOpen;

  lock (this)
  {
    // If a root node exists, LoadSiteMapFromStore has already
    // been called, and the method can return.
    if (rootNode != null)
    {
      return;
    }
    else
    {
      pathToOpen = HttpContext.Current.Server.MapPath("~" + "\\" + sourceFilename);

      if (File.Exists(pathToOpen))
      {
        // Open the file to read from.
        using (StreamReader sr = File.OpenText(pathToOpen))
        {

          // Clear the state of the collections and rootNode
          rootNode = null;
          siteMapNodes.Clear();
          childParentRelationship.Clear();

          // Parse the file and build the site map
          string s = "";
          string[] nodeValues = null;
          SiteMapNode temp = null;

          while ((s = sr.ReadLine()) != null)
          {

            // Build the various SiteMapNode objects and add
            // them to the ArrayList collections. The format used
            // is: URL,TITLE,DESCRIPTION,PARENTURL

            nodeValues = s.Split(',');

            temp = new SiteMapNode(this,
                HttpRuntime.AppDomainAppVirtualPath + "/" + nodeValues[0],
                HttpRuntime.AppDomainAppVirtualPath + "/" + nodeValues[0],
                nodeValues[1],
                nodeValues[2]);

            // Is this a root node yet?
            if (null == rootNode &&
                string.IsNullOrEmpty(nodeValues[3]))
            {
              rootNode = temp;
            }

          // If not the root node, add the node to the various collections.
            else
            {
              siteMapNodes.Add(new DictionaryEntry(temp.Url, temp));
              // The parent node has already been added to the collection.
              SiteMapNode parentNode =
                       FindSiteMapNode(HttpRuntime.AppDomainAppVirtualPath + "/" + nodeValues[3]);
              if (parentNode != null)
              {
                childParentRelationship.Add(new DictionaryEntry(temp.Url, parentNode));
              }
              else
              {
                throw new Exception("Parent node not found for current node.");
              }
            }
          }
        }
      }
      else
      {
        throw new Exception("File not found");
      }
    }
  }
  return;
}
  Protected Overridable Sub LoadSiteMapFromStore()
    Dim pathToOpen As String
    SyncLock Me
      ' If a root node exists, LoadSiteMapFromStore has already
      ' been called, and the method can return.
      If Not (aRootNode Is Nothing) Then
        Return
      Else
        pathToOpen = HttpContext.Current.Server.MapPath("~" & "\\" & sourceFilename)
        If File.Exists(pathToOpen) Then
          ' Open the file to read from.
          Dim sr As StreamReader = File.OpenText(pathToOpen)
          Try

            ' Clear the state of the collections and aRootNode
            aRootNode = Nothing
            siteMapNodes.Clear()
            childParentRelationship.Clear()

            ' Parse the file and build the site map
            Dim s As String = ""
            Dim nodeValues As String() = Nothing
            Dim temp As SiteMapNode = Nothing

            Do
              s = sr.ReadLine()

              If Not s Is Nothing Then
                ' Build the various SiteMapNode objects and add
                ' them to the ArrayList collections. The format used
                ' is: URL,TITLE,DESCRIPTION,PARENTURL
                nodeValues = s.Split(","c)

                temp = New SiteMapNode(Me, _
                    HttpRuntime.AppDomainAppVirtualPath & "/" & nodeValues(0), _
                    HttpRuntime.AppDomainAppVirtualPath & "/" & nodeValues(0), _
                    nodeValues(1), _
                    nodeValues(2))

                ' Is this a root node yet?
                If aRootNode Is Nothing AndAlso _
                  (nodeValues(3) Is Nothing OrElse _
                   nodeValues(3) = String.Empty) Then
                  aRootNode = temp

                  ' If not the root node, add the node to the various collections.
                Else

                  siteMapNodes.Add(New DictionaryEntry(temp.Url, temp))

                  ' The parent node has already been added to the collection.
                  Dim parentNode As SiteMapNode = _
                      FindSiteMapNode(HttpRuntime.AppDomainAppVirtualPath & "/" & nodeValues(3))

                  If Not (parentNode Is Nothing) Then
                    childParentRelationship.Add(New DictionaryEntry(temp.Url, parentNode))
                  Else
                    Throw New Exception("Parent node not found for current node.")
                  End If
                End If
              End If
            Loop Until s Is Nothing
          Finally
            sr.Close()
          End Try
        Else
          Throw New Exception("File not found")
        End If
      End If
    End SyncLock
    Return
  End Sub
End Class

Hinweise

Ein SiteMapNode Objekt stellt eine Websiteseite in einer Websitezuordnungsstruktur dar. SiteMapNode Objekte werden zur Laufzeit von der statischen SiteMap Klasse mit einem oder mehreren Websitezuordnungsanbietern geladen, um Websitezuordnungsdaten aus dem beständigen Speicher in den Arbeitsspeicher zu laden. SiteMapNode Objekte werden von der Klasse für die SiteMapNodeItem Verwendung durch Webserversteuerelemente wie das SiteMapPath Steuerelement umschlossen.

Die SiteMapNode Klasse enthält mehrere Eigenschaften, die zum Beschreiben einer einzelnen Seite auf einer Website verwendet werden, einschließlich Eigenschaften, die eine Seite beschreiben, z. B. die UrlEigenschaften , Titleund Description Eigenschaften. Während die Url Eigenschaft von der Klasse verwendet wird, bei der XmlSiteMapProvider es sich um den Standardmäßigen Websitezuordnungsanbieter für ASP.NET handelt, als Nachschlageschlüssel in den internen Auflistungen, die der Anbieter zum Nachverfolgen von Knoten verwendet, unterstützt die SiteMapNode Klasse eine grundlegende Key Eigenschaft, die von Websitekartenanbietern zum Nachverfolgen von Knoten verwendet werden kann. Darüber hinaus wird die Url Eigenschaft von Navigationssteuerelementen verwendet, um Links zu Seiten innerhalb einer Navigationsstruktur zu rendern. Die Title Eigenschaft ist ein Anzeigename für den SiteMapNode, ist häufig identisch mit dem HTML-Titel eines Webformulars und wird von Navigationssteuerelementen verwendet, um einfache Beschriftungen zu rendern. Schließlich steht eine NameValueCollection Sammlung zusätzlicher Attributes Attribute für Websitezuordnungsanbieter zur Verfügung, die Objekte verwenden SiteMapNode , erfordern jedoch zusätzliche Eigenschaften, die in der Basisklasse SiteMapNode nicht verfügbar sind.

Konstruktoren

Name Beschreibung
SiteMapNode(SiteMapProvider, String, String, String, String, IList, NameValueCollection, NameValueCollection, String)

Initialisiert eine neue Instanz der SiteMapNode Klasse mithilfe des angegebenen Websitezuordnungsanbieters, der den Knoten, die URL, den Titel, die Beschreibung, die Rollen, zusätzliche Attribute und explizite und implizite Ressourcenschlüssel für die Lokalisierung verwaltet.

SiteMapNode(SiteMapProvider, String, String, String, String)

Initialisiert eine neue Instanz der Klasse mithilfe der SiteMapNode angegebenen URL, eine key , um die Seite zu identifizieren, die der Knoten darstellt, einen Titel und eine Beschreibung sowie den Websitezuordnungsanbieter, der den Knoten verwaltet.

SiteMapNode(SiteMapProvider, String, String, String)

Initialisiert eine neue Instanz der Klasse mithilfe der SiteMapNode angegebenen URL, eine key , um die Seite zu identifizieren, die der Knoten darstellt, einen Titel und den Websitezuordnungsanbieter, der den Knoten verwaltet.

SiteMapNode(SiteMapProvider, String, String)

Initialisiert eine neue Instanz der Klasse mithilfe der SiteMapNode angegebenen URL, eine key , um die Seite zu identifizieren, die der Knoten darstellt, und den Websitezuordnungsanbieter, der den Knoten verwaltet.

SiteMapNode(SiteMapProvider, String)

Initialisiert eine neue Instanz der SiteMapNode Klasse, wobei die angegebene key Verwendet wird, um die Seite zu identifizieren, die der Knoten darstellt, und den Websitezuordnungsanbieter, der den Knoten verwaltet.

Eigenschaften

Name Beschreibung
Attributes

Dient zum Abrufen oder Festlegen einer Auflistung zusätzlicher Attribute, die über die stark typierten Eigenschaften hinausgehen, die für die SiteMapNode Klasse definiert sind.

ChildNodes

Ruft alle untergeordneten Knoten des aktuellen SiteMapNode Objekts vom zugeordneten SiteMapProvider Anbieter ab oder legt diese fest.

Description

Dient zum Abrufen oder Festlegen einer Beschreibung für die SiteMapNode.

HasChildNodes

Ruft einen Wert ab, der angibt, ob der aktuelle SiteMapNode Knoten über untergeordnete Knoten verfügt.

Item[String]

Dient zum Abrufen oder Festlegen eines benutzerdefinierten Attributs aus der Attributes Auflistung oder einer Ressourcenzeichenfolge basierend auf dem angegebenen Schlüssel.

Key

Ruft eine Zeichenfolge ab, die einen Nachschlageschlüssel für einen Standortzuordnungsknoten darstellt.

NextSibling

Ruft den nächsten SiteMapNode Knoten auf der gleichen hierarchischen Ebene wie die aktuelle ab, relativ zur ParentNode Eigenschaft (sofern vorhanden).

ParentNode

Dient zum Abrufen oder Festlegen des SiteMapNode Objekts, das das übergeordnete Objekt des aktuellen Knotens ist.

PreviousSibling

Ruft das vorherige SiteMapNode Objekt auf derselben Ebene wie die aktuelle ab, relativ zum ParentNode Objekt (sofern vorhanden).

Provider

Ruft den SiteMapProvider Anbieter ab, von dem das SiteMapNode Objekt nachverfolgt wird.

ReadOnly

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob der Standortzuordnungsknoten geändert werden kann.

ResourceKey

Ruft den Ressourcenschlüssel ab, der zum Lokalisieren des Ressourcenschlüssels verwendet wird, oder legt diesen SiteMapNodefest.

Roles

Dient zum Abrufen oder Festlegen einer Auflistung von Rollen, die dem Objekt zugeordnet sind, das während der SiteMapNode Sicherheitskürzung verwendet wird.

RootNode

Ruft den Stammknoten des Stammanbieters in einer Websitezuordnungsanbieterhierarchie ab. Wenn keine Anbieterhierarchie vorhanden ist, ruft die RootNode Eigenschaft den Stammknoten des aktuellen Anbieters ab.

Title

Dient zum Abrufen oder Festlegen des Titels des SiteMapNode Objekts.

Url

Dient zum Abrufen oder Festlegen der URL der Seite, die das SiteMapNode Objekt darstellt.

Methoden

Name Beschreibung
Clone()

Erstellt einen neuen Knoten, der eine Kopie des aktuellen Knotens ist.

Clone(Boolean)

Erstellt eine neue Kopie, die eine Kopie des aktuellen Knotens ist, optional das Klonen aller übergeordneten und übergeordneten Knoten des aktuellen Knotens.

Equals(Object)

Ruft einen Wert ab, der angibt, ob der aktuelle SiteMapNode mit dem angegebenen Objekt identisch ist.

GetAllNodes()

Ruft eine schreibgeschützte Auflistung aller SiteMapNode Objekte ab, die untergeordnete Elemente des aufrufenden Knotens sind, unabhängig vom Grad der Trennung.

GetDataSourceView(SiteMapDataSource, String)

Ruft das SiteMapDataSourceView Objekt ab, das dem aktuellen Knoten zugeordnet ist.

GetExplicitResourceString(String, String, Boolean)

Ruft eine lokalisierte Zeichenfolge basierend auf einem SiteMapNode Attribut zum Lokalisieren ab, eine Standardzeichenfolge, die zurückgegeben werden soll, wenn keine Ressource gefunden wird, und ein boolescher Wert, der angibt, ob eine Ausnahme ausgelöst werden soll, wenn keine Ressource gefunden wird.

GetHashCode()

Gibt den Hashcode des SiteMapNode Objekts zurück.

GetHierarchicalDataSourceView()

Ruft das SiteMapHierarchicalDataSourceView Objekt ab, das dem aktuellen Knoten zugeordnet ist.

GetImplicitResourceString(String)

Ruft eine lokalisierte Zeichenfolge basierend auf dem Attributnamen und ResourceKey der Eigenschaft ab, SiteMapNode die durch die SiteMapProvider Nachverfolgung angegeben wird.

GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
IsAccessibleToUser(HttpContext)

Ruft einen Wert ab, der angibt, ob der angegebene Standortzuordnungsknoten vom Benutzer im angegebenen Kontext angezeigt werden kann.

IsDescendantOf(SiteMapNode)

Ruft einen Wert ab, der angibt, ob der aktuelle Standortzuordnungsknoten ein untergeordneter oder direkter Nachfolger des angegebenen Knotens ist.

MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ToString()

Konvertiert den Wert dieser Instanz der SiteMapNode Klasse in die entsprechende Zeichenfolgendarstellung.

Explizite Schnittstellenimplementierungen

Name Beschreibung
ICloneable.Clone()

Erstellt einen neuen Knoten, der eine Kopie des aktuellen Knotens ist. Eine Beschreibung dieses Mitglieds finden Sie unter Clone().

IHierarchyData.GetChildren()

Ruft die hierarchischen untergeordneten Datenelemente des aktuellen Elements ab. Eine Beschreibung dieses Mitglieds finden Sie unter GetChildren().

IHierarchyData.GetParent()

Ruft das hierarchische übergeordnete Element des aktuellen Elements ab. Eine Beschreibung dieses Mitglieds finden Sie unter GetParent().

IHierarchyData.HasChildren

Ruft einen Wert ab, der angibt, ob das aktuelle SiteMapNode Objekt über untergeordnete Knoten verfügt. Eine Beschreibung dieses Mitglieds finden Sie unter HasChildren.

IHierarchyData.Item

Ruft das hierarchische Datenelement ab. Eine Beschreibung dieses Mitglieds finden Sie unter Item.

IHierarchyData.Path

Ruft den Pfad des hierarchischen Datenelements ab. Eine Beschreibung dieses Mitglieds finden Sie unter Path.

IHierarchyData.Type

Ruft eine Zeichenfolge ab, die den Typnamen des hierarchischen Datenelements darstellt. Eine Beschreibung dieses Mitglieds finden Sie unter Type.

INavigateUIData.Description

Ruft die Description Eigenschaft des Standortzuordnungsknotens ab. Eine Beschreibung dieses Mitglieds finden Sie unter Description.

INavigateUIData.Name

Ruft die Title Eigenschaft des Standortzuordnungsknotens ab. Eine Beschreibung dieses Mitglieds finden Sie unter Name.

INavigateUIData.NavigateUrl

Ruft die Url Eigenschaft des Standortzuordnungsknotens ab. Eine Beschreibung dieses Mitglieds finden Sie unter NavigateUrl.

INavigateUIData.Value

Ruft die Title Eigenschaft des Standortzuordnungsknotens ab. Eine Beschreibung dieses Mitglieds finden Sie unter Value.

Gilt für:

Weitere Informationen