Freigeben über


SiteMapNode Konstruktoren

Definition

Initialisiert eine neue Instanz der SiteMapNode-Klasse, und ordnet sie dem angegebenen SiteMapProvider-Objekt zu.

Überlädt

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.

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.

public:
 SiteMapNode(System::Web::SiteMapProvider ^ provider, System::String ^ key);
public SiteMapNode (System.Web.SiteMapProvider provider, string key);
new System.Web.SiteMapNode : System.Web.SiteMapProvider * string -> System.Web.SiteMapNode
Public Sub New (provider As SiteMapProvider, key As String)

Parameter

provider
SiteMapProvider

Der SiteMapProvider, dem der Knoten zugeordnet ist.

key
String

Ein anbieterspezifischer Suchschlüssel.

Ausnahmen

SiteMapProvider ist null.

- oder -

key ist null.

Hinweise

Die XmlSiteMapProvider -Klasse, bei der es sich um die Standardanbieterimplementierung SiteMapProvider für ASP.NET handelt, verwendet die SiteMapNode.Url -Eigenschaft als Nachschlageschlüssel, wenn ein Schlüssel für den Knoten bereitgestellt wird (wenn keine URL angegeben wird, wird ein Nachverfolgungsbezeichner für den Knoten generiert). Daher muss jedes SiteMapNode Steuerelement, das eine URL bereitstellt und von verwendet wird, XmlSiteMapProvider über eine eindeutige URL innerhalb des Bereichs des Anbieters verfügen.

Gilt für:

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.

public:
 SiteMapNode(System::Web::SiteMapProvider ^ provider, System::String ^ key, System::String ^ url);
public SiteMapNode (System.Web.SiteMapProvider provider, string key, string url);
new System.Web.SiteMapNode : System.Web.SiteMapProvider * string * string -> System.Web.SiteMapNode
Public Sub New (provider As SiteMapProvider, key As String, url As String)

Parameter

provider
SiteMapProvider

Der SiteMapProvider, dem der Knoten zugeordnet ist.

key
String

Ein anbieterspezifischer Suchschlüssel.

url
String

Die URL der Seite, die der Knoten innerhalb der Site darstellt.

Ausnahmen

SiteMapProvider ist null.

- oder -

key ist null.

Beispiele

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

Hinweise

Die XmlSiteMapProvider -Klasse, bei der es sich um die Standardanbieterimplementierung SiteMapProvider für ASP.NET handelt, verwendet die SiteMapNode.Url -Eigenschaft als Nachschlageschlüssel, wenn ein Schlüssel für den Knoten bereitgestellt wird (wenn keine URL angegeben wird, wird ein Nachverfolgungsbezeichner für den Knoten generiert). Daher muss jedes SiteMapNode Objekt, das eine URL bereitstellt und von verwendet wird, XmlSiteMapProvider über eine eindeutige URL innerhalb des Bereichs des Anbieters verfügen.

Gilt für:

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.

public:
 SiteMapNode(System::Web::SiteMapProvider ^ provider, System::String ^ key, System::String ^ url, System::String ^ title);
public SiteMapNode (System.Web.SiteMapProvider provider, string key, string url, string title);
new System.Web.SiteMapNode : System.Web.SiteMapProvider * string * string * string -> System.Web.SiteMapNode
Public Sub New (provider As SiteMapProvider, key As String, url As String, title As String)

Parameter

provider
SiteMapProvider

Der SiteMapProvider, dem der Knoten zugeordnet ist.

key
String

Ein anbieterspezifischer Suchschlüssel.

url
String

Die URL der Seite, die der Knoten innerhalb der Site darstellt.

title
String

Eine Bezeichnung für den Knoten, die häufig durch Navigationssteuerelemente angezeigt wird.

Ausnahmen

SiteMapProvider ist null.

- oder -

key ist null.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Sie den SiteMapNode Konstruktor verwenden, um eine neue instance der SiteMapNode -Klasse zu erstellen. Der Knoten wird mit Werten aus einer Microsoft Access-Datenbankzeile initialisiert.

Dieses Codebeispiel ist Teil eines größeren Beispiels für die BuildSiteMap -Methode.

OleDbCommand^ rootNodeCommand = gcnew OleDbCommand
   ("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL", accessConnection);
OleDbDataReader^ rootNodeReader = rootNodeCommand->ExecuteReader();
if ( rootNodeReader->HasRows )
{
   rootNodeReader->Read();
   rootNodeId = rootNodeReader->GetInt32( 0 );
   
   // Create a SiteMapNode that references the current StaticSiteMapProvider.
   rootNode = gcnew SiteMapNode(this, rootNodeId.ToString(), 
      rootNodeReader->GetString( 1 ),rootNodeReader->GetString( 2 ));
}
else
   return nullptr;
rootNodeReader->Close();

OleDbCommand rootNodeCommand =
    new OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL",
                     accessConnection);
OleDbDataReader rootNodeReader = rootNodeCommand.ExecuteReader();

if(rootNodeReader.HasRows) {
    rootNodeReader.Read();
    rootNodeId = rootNodeReader.GetInt32(0);
    // Create a SiteMapNode that references the current StaticSiteMapProvider.
    rootNode   = new SiteMapNode(this,
                                 rootNodeId.ToString(),
                                 rootNodeReader.GetString(1),
                                 rootNodeReader.GetString(2));
}
else
{
    return null;
}

rootNodeReader.Close();
Dim rootNodeCommand As New OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL", accessConnection)
Dim rootNodeReader As OleDbDataReader = rootNodeCommand.ExecuteReader()

If rootNodeReader.HasRows Then
    rootNodeReader.Read()
    rootNodeId = rootNodeReader.GetInt32(0)
    ' Create a SiteMapNode that references the current StaticSiteMapProvider.
    aRootNode = New SiteMapNode(Me, rootNodeId.ToString(), rootNodeReader.GetString(1), rootNodeReader.GetString(2))
Else
    Return Nothing
End If
rootNodeReader.Close()

Hinweise

Die XmlSiteMapProvider -Klasse, bei der es sich um die Standardanbieterimplementierung SiteMapProvider für ASP.NET handelt, verwendet die SiteMapNode.Url -Eigenschaft als Nachschlageschlüssel, wenn ein Schlüssel für den Knoten bereitgestellt wird (wenn keine URL angegeben wird, wird ein Nachverfolgungsbezeichner für den Knoten generiert). Daher muss jedes SiteMapNode Objekt, das eine URL bereitstellt und von verwendet wird, XmlSiteMapProvider über eine eindeutige URL innerhalb des Bereichs des Anbieters verfügen.

Wenn kein title angegeben wird, geben Aufrufe der Title -Eigenschaft das String.Empty Feld zurück.

Gilt für:

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.

public:
 SiteMapNode(System::Web::SiteMapProvider ^ provider, System::String ^ key, System::String ^ url, System::String ^ title, System::String ^ description);
public SiteMapNode (System.Web.SiteMapProvider provider, string key, string url, string title, string description);
new System.Web.SiteMapNode : System.Web.SiteMapProvider * string * string * string * string -> System.Web.SiteMapNode
Public Sub New (provider As SiteMapProvider, key As String, url As String, title As String, description As String)

Parameter

provider
SiteMapProvider

Der SiteMapProvider, dem der Knoten zugeordnet ist.

key
String

Ein anbieterspezifischer Suchschlüssel.

url
String

Die URL der Seite, die der Knoten innerhalb der Site darstellt.

title
String

Eine Bezeichnung für den Knoten, die häufig durch Navigationssteuerelemente angezeigt wird.

description
String

Eine Beschreibung der Seite, die vom Knoten dargestellt wird.

Ausnahmen

SiteMapProvider ist null.

- oder -

key ist null.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie sie den SiteMapNode Konstruktor verwenden, um ein SiteMapNode Objekt zu erstellen, indem Daten aus einer einfachen Textdatei analysiert werden, um eine Siteübersicht im Arbeitsspeicher zu erstellen.

Dieses Codebeispiel ist Teil eines größeren Beispiels für die abstrakte SiteMapProvider Klasse.

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

Die XmlSiteMapProvider -Klasse, bei der es sich um die Standardanbieterimplementierung SiteMapProvider für ASP.NET handelt, verwendet die SiteMapNode.Url -Eigenschaft als Nachschlageschlüssel, wenn ein Schlüssel für den Knoten bereitgestellt wird (wenn keine URL angegeben wird, wird ein Nachverfolgungsbezeichner für den Knoten generiert). Daher muss jedes SiteMapNode Objekt, das eine URL bereitstellt und von verwendet wird, XmlSiteMapProvider über eine eindeutige URL innerhalb des Bereichs des Anbieters verfügen.

Wenn kein title oder description angegeben wird, geben Aufrufe der Title - oder Description -Eigenschaften ein String.Empty Feld zurück.

Weitere Informationen

Gilt für:

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.

public:
 SiteMapNode(System::Web::SiteMapProvider ^ provider, System::String ^ key, System::String ^ url, System::String ^ title, System::String ^ description, System::Collections::IList ^ roles, System::Collections::Specialized::NameValueCollection ^ attributes, System::Collections::Specialized::NameValueCollection ^ explicitResourceKeys, System::String ^ implicitResourceKey);
public SiteMapNode (System.Web.SiteMapProvider provider, string key, string url, string title, string description, System.Collections.IList roles, System.Collections.Specialized.NameValueCollection attributes, System.Collections.Specialized.NameValueCollection explicitResourceKeys, string implicitResourceKey);
new System.Web.SiteMapNode : System.Web.SiteMapProvider * string * string * string * string * System.Collections.IList * System.Collections.Specialized.NameValueCollection * System.Collections.Specialized.NameValueCollection * string -> System.Web.SiteMapNode
Public Sub New (provider As SiteMapProvider, key As String, url As String, title As String, description As String, roles As IList, attributes As NameValueCollection, explicitResourceKeys As NameValueCollection, implicitResourceKey As String)

Parameter

provider
SiteMapProvider

Der SiteMapProvider, dem der Knoten zugeordnet ist.

key
String

Ein anbieterspezifischer Suchschlüssel.

url
String

Die URL der Seite, die der Knoten innerhalb der Site darstellt.

title
String

Eine Bezeichnung für den Knoten, die häufig durch Navigationssteuerelemente angezeigt wird.

description
String

Eine Beschreibung der Seite, die vom Knoten dargestellt wird.

roles
IList

Eine IList von Rollen, für die die Anzeige der Seite zulässig ist, die vom SiteMapNode dargestellt wird.

attributes
NameValueCollection

Eine NameValueCollection von zusätzlichen Attributen, mit denen der SiteMapNode initialisier wird.

explicitResourceKeys
NameValueCollection

Eine NameValueCollection von expliziten Ressourcenschlüsseln, die für die Lokalisierung verwendet werden.

implicitResourceKey
String

Ein impliziter Ressourcenschlüssel, der für die Lokalisierung verwendet wird.

Ausnahmen

SiteMapProvider ist null.

- oder -

key ist null.

Hinweise

Die XmlSiteMapProvider -Klasse, bei der es sich um die Standardanbieterimplementierung SiteMapProvider für ASP.NET handelt, verwendet die SiteMapNode.Url -Eigenschaft als Nachschlageschlüssel, wenn ein Schlüssel für den Knoten bereitgestellt wird (wenn keine URL angegeben wird, wird ein Nachverfolgungsbezeichner für den Knoten generiert). Daher muss jedes SiteMapNode Objekt, das eine URL bereitstellt und von verwendet wird, XmlSiteMapProvider über eine eindeutige URL innerhalb des Bereichs des Anbieters verfügen.

Die NameValueCollection Auflistung von Attributen, mit denen erstellt SiteMapNode wird, ist über die Attributes -Eigenschaft verfügbar und erleichtert das Anwenden zusätzlicher Attribute auf einen Siteübersichtsknoten und das Erweitern seiner Funktionen, ohne dafür eine benutzerdefinierte Klasse abzuleiten.

Geben Sie eine IList Auflistung von Rollen an, um eine Reihe von Rollen bereitzustellen, die den Knoten anzeigen können, wenn die SecurityTrimmingEnabled -Eigenschaft zurückgibt true. Weitere Informationen finden Sie unter SecurityTrimmingEnabled.

Der XmlSiteMapProvider Anbieter verwendet die SiteMapNode.Url -Eigenschaft als Nachschlageschlüssel. Daher muss jeder SiteMapNode , der XmlSiteMapProvider von verwendet wird, über eine eindeutige URL im Bereich des Anbieters verfügen.

Wenn kein title oder description angegeben wird, geben Aufrufe der Title - oder Description -Eigenschaften ein String.Empty Feld zurück.

Um Ressourcen für die Lokalisierung programmgesteuert anzugeben, legen Sie entweder den Wert von implicitResourceKey auf einen eindeutigen Namen fest, der zum Identifizieren lokalisierter Ressourcen für den Knoten verwendet wird, oder legen Sie auf eine NameValueCollection Sammlung von name/value Paaren festexplicitResourceKeys, wobei name die zu lokalisierende Knoteneigenschaft oder das benutzerdefinierte Attribut ist und value Lokalisierungswerte für die Node-Eigenschaft oder das benutzerdefinierte Attribut enthält. Die lokalisierten Werte können dann in den entsprechenden RESX-Dateien festgelegt werden. Weitere Informationen zum Lokalisieren von Title, Descriptionund benutzerdefinierten Eigenschaften eines SiteMapNode Objekts finden Sie unter How to: Localize Site-Map Data. Informationen zu den Syntaxanforderungen der explicitResourceKeys Auflistung finden Sie unter NameValueCollection.

Weitere Informationen

Gilt für: