Teilen über


SiteMapNode Klasse

Definition

Stellt einen Knoten in der hierarchischen Siteübersichtsstruktur dar, z. B. den Knoten, der von der SiteMap-Klasse und den Klassen beschrieben wird, 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 Websiteübersichtsknotensammlung erstellen und ihr Elemente hinzufügen. Im zweiten Codebeispiel wird veranschaulicht, wie Siteübersichtsdaten aus einer Textdatei geladen werden.

Im folgenden Codebeispiel wird veranschaulicht, wie Sie den SiteMapNodeCollection Konstruktor verwenden, um eine neue SiteMapNodeCollection Auflistung zu erstellen und ihr dann mit der Add -Methode Elemente hinzuzufügen.

// 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 eine Textdatei analysiert wird, die SimpleTextSiteMapProvider Siteübersichtsdaten in durch Trennzeichen getrennten Zeichenfolgen enthält. Den internen Nachverfolgungsauflistungen der -Klasse wird für jede Zeile, die aus der Datei gelesen wird, ein neues SiteMapNode Objekt hinzugefügt.

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 Siteübersichtsstruktur dar. SiteMapNode Objekte werden von der statischen SiteMap Klasse zur Laufzeit mithilfe eines oder mehrerer Siteübersichtsanbieter geladen, um Standortzuordnungsdaten aus persistentem Speicher in den Arbeitsspeicher zu laden. SiteMapNode -Objekte werden von der -Klasse für die SiteMapNodeItem Verwendung durch Webserversteuerelemente, z. B. das SiteMapPath -Steuerelement, umschlossen.

Die SiteMapNode -Klasse enthält mehrere Eigenschaften, die verwendet werden, um eine einzelne Seite auf einer Website zu beschreiben, einschließlich Eigenschaften, die eine Seite beschreiben, z. B. die UrlEigenschaften , Titleund Description . Während die Url -Eigenschaft von der XmlSiteMapProvider -Klasse verwendet wird, die der Standardwebsitezuordnungsanbieter für ASP.NET ist, als Nachschlageschlüssel in den internen Sammlungen, die der Anbieter zum Nachverfolgen von Knoten verwendet, unterstützt die -Klasse eine grundlegende Key Eigenschaft, die SiteMapNode von Siteübersichtsanbietern zum Nachverfolgen von Knoten verwendet werden kann. Darüber hinaus wird die Url -Eigenschaft von Navigationssteuerelementen verwendet, um Hyperlinks zu Seiten innerhalb einer Navigationsstruktur zu rendern. Die Title -Eigenschaft ist ein Anzeigename für , SiteMapNodeder häufig mit dem HTML-Titel eines Webformulars identisch ist, und wird von Navigationssteuerelementen verwendet, um einfache Bezeichnungen zu rendern. Schließlich steht eine NameValueCollection Auflistung zusätzlicher Attributes Attribute für Siteübersichtsanbieter zur Verfügung, die Objekte verwenden SiteMapNode , aber zusätzliche Eigenschaften erfordern, die in der Basisklasse SiteMapNode nicht verfügbar sind.

Konstruktoren

SiteMapNode(SiteMapProvider, String)

Initialisiert eine neue Instanz der SiteMapNode-Klasse, wobei mit dem angegebenen key die vom Knoten dargestellte Seite sowie der den Knoten verwaltende Siteübersichtsanbieter angegeben werden.

SiteMapNode(SiteMapProvider, String, String)

Initialisiert eine neue Instanz der SiteMapNode-Klasse mithilfe der angegebenen URL, eines key zum Angeben der Seite, die vom Knoten dargestellt wird, sowie des Siteübersichtsanbieters, der den Knoten verwaltet.

SiteMapNode(SiteMapProvider, String, String, String)

Initialisiert eine neue Instanz der SiteMapNode-Klasse mithilfe der angegebenen URL, eines key zum Angeben der Seite, die vom Knoten dargestellt wird, eines Titels und des Siteübersichtsanbieters, der den Knoten verwaltet.

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

Initialisiert eine neue Instanz der SiteMapNode-Klasse mithilfe der angegebenen URL, eines key zum Angeben der Seite, die vom Knoten dargestellt wird, eines Titels und einer Beschreibung sowie des Siteübersichtsanbieters, der den Knoten verwaltet.

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

Initialisiert eine neue Instanz der SiteMapNode Klasse mithilfe des angegebenen Siteübersichtsanbieters, der den Knoten, die URL, den Titel, die Beschreibung, die Rolle, die zusätzlichen Attribute sowie die expliziten und impliziten Ressourcenschlüssel für die Lokalisierung verwaltet.

Eigenschaften

Attributes

Ruft eine Auflistung zusätzlicher Attribute neben den stark typisierten Eigenschaften ab, die für die SiteMapNode-Klasse definiert sind, oder legt diese fest.

ChildNodes

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

Description

Ruft eine Beschreibung für SiteMapNode ab oder legt sie fest.

HasChildNodes

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

Item[String]

Ruft ein benutzerdefiniertes Attribut aus der Attributes-Auflistung bzw. eine Ressourcenzeichenfolge auf der Grundlage des angegebenen Schlüssels ab oder legt dieses bzw. diese fest.

Key

Ruft eine Zeichenfolge ab, die einen Suchschlüssel für einen Siteübersichtsknoten darstellt.

NextSibling

Ruft den nächsten SiteMapNode-Knoten auf der gleichen hierarchischen Ebene wie der aktuelle Knoten in Bezug auf die ParentNode-Eigenschaft ab (falls ein solcher vorhanden ist).

ParentNode

Ruft das SiteMapNode-Objekt ab, das das übergeordnete Element des aktuellen Knotens darstellt, oder legt dieses fest.

PreviousSibling

Ruft das vorherige SiteMapNode-Objekt auf der gleichen Ebene wie das aktuelle Objekt in Bezug auf das ParentNode-Objekt ab (sofern ein solches vorhanden ist).

Provider

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

ReadOnly

Ruft einen Wert ab, der angibt, ob der Siteübersichtsknoten geändert werden kann, oder legt diesen fest.

ResourceKey

Ruft den Ressourcenschlüssel ab, mit dem der SiteMapNode lokalisiert wird, oder legt diesen fest.

Roles

Ruft die Sammlung von Rollen ab, die dem während der Sicherheitskürzung verwendeten SiteMapNode-Objekt zugeordnet sind, oder legt diese Sammlung fest.

RootNode

Ruft den Stammknoten des Stammanbieters in einer Hierarchie von Siteübersichtsanbietern ab. Wenn keine Anbieterhierarchie vorhanden ist, ruft die RootNode-Eigenschaft den Stammknoten des aktuellen Anbieters ab.

Title

Ruft den Titel des SiteMapNode-Objekts ab oder legt diesen fest.

Url

Ruft die URL der Seite ab, die das SiteMapNode-Objekt darstellt, oder legt diese fest.

Methoden

Clone()

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

Clone(Boolean)

Erstellt eine neue Kopie, die eine Kopie des aktuellen Knotens darstellt, wobei optional alle übergeordneten Knoten und Vorgängerknoten des aktuellen Knotens geklont werden.

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 Nachfolger des aufrufenden Knotens sind, ungeachtet des Trennungsgrades.

GetDataSourceView(SiteMapDataSource, String)

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

GetExplicitResourceString(String, String, Boolean)

Ruft eine lokalisierte Zeichenfolge auf der Grundlage eines zu lokalisierenden SiteMapNode-Attributs, eine zurückzugebende Standardzeichenfolge (wenn keine Ressource gefunden wird) und einen booleschen Wert ab, 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 auf der Grundlage des Attributnamens und der ResourceKey-Eigenschaft ab, die vom SiteMapProvider angegeben wird, mit dessen Hilfe der SiteMapNode verfolgt wird.

GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
IsAccessibleToUser(HttpContext)

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

IsDescendantOf(SiteMapNode)

Ruft einen Wert ab, der angibt, ob der aktuelle Siteübersichtsknoten ein untergeordneter Knoten oder ein direkter Nachfolger des angegebenen Knotens ist.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

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

Explizite Schnittstellenimplementierungen

ICloneable.Clone()

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

IHierarchyData.GetChildren()

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

IHierarchyData.GetParent()

Ruft das hierarchisch übergeordnete Element des aktuellen Elements ab. Eine Beschreibung dieses Elements 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 Elements finden Sie unter HasChildren.

IHierarchyData.Item

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

IHierarchyData.Path

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

IHierarchyData.Type

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

INavigateUIData.Description

Ruft die Description-Eigenschaft des Siteübersichtsknotens ab. Eine Beschreibung dieses Elements finden Sie unter Description.

INavigateUIData.Name

Ruft die Title-Eigenschaft des Siteübersichtsknotens ab. Eine Beschreibung dieses Elements finden Sie unter Name.

INavigateUIData.NavigateUrl

Ruft die Url-Eigenschaft des Siteübersichtsknotens ab. Eine Beschreibung dieses Elements finden Sie unter NavigateUrl.

INavigateUIData.Value

Ruft die Title-Eigenschaft des Siteübersichtsknotens ab. Eine Beschreibung dieses Elements finden Sie unter Value.

Gilt für:

Weitere Informationen