Freigeben über


SiteMapNode Konstruktoren

Definition

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

Überlädt

Name Beschreibung
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.

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, 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, 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, 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)

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.

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 Knoten, dem der Knoten zugeordnet ist.

key
String

Ein anbieterspezifischer Nachschlageschlü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 eine für den Knoten bereitgestellt wird (wenn keine URL angegeben wird, wird für den Knoten ein Nachverfolgungsbezeichner generiert). Daher muss jedes SiteMapNode Steuerelement, das eine URL bereitstellt und vom XmlSiteMapProvider Anbieter verwendet wird, über eine eindeutige URL im Bereich des Anbieters verfügen.

Gilt für:

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.

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 Knoten, dem der Knoten zugeordnet ist.

key
String

Ein anbieterspezifischer Nachschlageschlüssel.

url
String

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

Ausnahmen

SiteMapProvider ist null.

- oder -

key ist null.

Beispiele

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

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 eine für den Knoten bereitgestellt wird (wenn keine URL angegeben wird, wird für den Knoten ein Nachverfolgungsbezeichner generiert). Daher muss jedes SiteMapNode Objekt, das eine URL bereitstellt und von der XmlSiteMapProvider verwendet wird, eine eindeutige URL innerhalb des Bereichs des Anbieters aufweisen.

Gilt für:

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.

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 Knoten, dem der Knoten zugeordnet ist.

key
String

Ein anbieterspezifischer Nachschlageschlüssel.

url
String

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

title
String

Eine Beschriftung für den Knoten, die häufig von Navigationssteuerelementen angezeigt wird.

Ausnahmen

SiteMapProvider ist null.

- oder -

key ist null.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie der SiteMapNode Konstruktor zum Erstellen einer neuen Instanz der SiteMapNode Klasse verwendet wird. Der Knoten wird mit Werten aus einer Microsoft Access-Datenbankzeile initialisiert.

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

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 eine für den Knoten bereitgestellt wird (wenn keine URL angegeben wird, wird für den Knoten ein Nachverfolgungsbezeichner generiert). Daher muss jedes SiteMapNode Objekt, das eine URL bereitstellt und von der XmlSiteMapProvider verwendet wird, eine eindeutige URL innerhalb des Bereichs des Anbieters aufweisen.

Wenn keine 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 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.

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 Knoten, dem der Knoten zugeordnet ist.

key
String

Ein anbieterspezifischer Nachschlageschlüssel.

url
String

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

title
String

Eine Beschriftung für den Knoten, die häufig von Navigationssteuerelementen angezeigt wird.

description
String

Eine Beschreibung der Seite, die der Knoten darstellt.

Ausnahmen

SiteMapProvider ist null.

- oder -

key ist null.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Sie mithilfe des SiteMapNode Konstruktors ein SiteMapNode Objekt erstellen, indem Daten aus einer einfachen Textdatei analysiert werden, um eine Websitezuordnung im Arbeitsspeicher zu erstellen.

Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die abstrakte 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

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 eine für den Knoten bereitgestellt wird (wenn keine URL angegeben wird, wird für den Knoten ein Nachverfolgungsbezeichner generiert). Daher muss jedes SiteMapNode Objekt, das eine URL bereitstellt und von der XmlSiteMapProvider verwendet wird, eine eindeutige URL innerhalb des Bereichs des Anbieters aufweisen.

Wenn keine title oder description nicht angegeben wird, geben Aufrufe der Title Felder 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 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.

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 Knoten, dem der Knoten zugeordnet ist.

key
String

Ein anbieterspezifischer Nachschlageschlüssel.

url
String

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

title
String

Eine Beschriftung für den Knoten, die häufig von Navigationssteuerelementen angezeigt wird.

description
String

Eine Beschreibung der Seite, die der Knoten darstellt.

roles
IList

Eine IList Von Rollen, die das Anzeigen der Seite durch die SiteMapNode.

attributes
NameValueCollection

Eine NameValueCollection von zusätzlichen Attributen, die zum Initialisieren der SiteMapNode.

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 eine für den Knoten bereitgestellt wird (wenn keine URL angegeben wird, wird für den Knoten ein Nachverfolgungsbezeichner generiert). Daher muss jedes SiteMapNode Objekt, das eine URL bereitstellt und von der XmlSiteMapProvider verwendet wird, eine eindeutige URL innerhalb des Bereichs des Anbieters aufweisen.

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

Stellen Sie eine IList Sammlung von Rollen bereit, um eine Reihe von Rollen bereitzustellen, die den Knoten anzeigen können, wenn die SecurityTrimmingEnabled Eigenschaft zurückgegeben wird true. Weitere Informationen finden Sie unter SecurityTrimmingEnabled.

Der XmlSiteMapProvider Anbieter verwendet die SiteMapNode.Url Eigenschaft als Nachschlageschlüssel. Daher müssen alle SiteMapNode , die von der XmlSiteMapProvider Anwendung verwendet werden, eine eindeutige URL innerhalb des Bereichs des Anbieters haben.

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

Um Ressourcen für die Lokalisierung programmgesteuert anzugeben, legen Sie entweder den Wert auf implicitResourceKey einen eindeutigen Namen fest, der verwendet wird, um lokalisierte Ressourcen für den Knoten zu identifizieren oder auf eine NameValueCollection Sammlung von name/value Paaren festzulegenexplicitResourceKeys, bei denen name es sich um die Knoteneigenschaft oder das benutzerdefinierte Attribut handelt, um Lokalisierungswerte für die Knoteneigenschaft oder das benutzerdefinierte Attribut zu lokalisieren und value zu enthalten. Die lokalisierten Werte können dann in den entsprechenden RESX-Dateien festgelegt werden. Weitere Informationen zum Lokalisieren der Title, Descriptionund aller benutzerdefinierten Eigenschaften eines SiteMapNode Objekts finden Sie unter How to: Localize Site-Map Data. Die Syntaxanforderungen der explicitResourceKeys Auflistung finden Sie unter NameValueCollection.

Weitere Informationen

Gilt für: