SiteMapNode Klas

Definitie

Vertegenwoordigt een knooppunt in de hiërarchische siteoverzichtstructuur, zoals die wordt beschreven door de SiteMap klasse en klassen die de abstracte SiteMapProvider klasse implementeren.

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
Overname
SiteMapNode
Implementeringen

Voorbeelden

Deze sectie bevat twee codevoorbeelden. In het eerste codevoorbeeld ziet u hoe u een nieuwe verzameling siteoverzichtknooppunten maakt en er elementen aan toevoegt. In het tweede codevoorbeeld ziet u hoe u siteoverzichtsgegevens uit een tekstbestand laadt.

In het volgende codevoorbeeld ziet u hoe u de SiteMapNodeCollection constructor gebruikt om een nieuwe SiteMapNodeCollection verzameling te maken en vervolgens elementen eraan toevoegt met de Add methode.

// 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

In het volgende codevoorbeeld ziet u hoe het SimpleTextSiteMapProvider tekstbestand dat siteoverzichtgegevens bevat, parseert in door komma's gescheiden tekenreeksen. Er wordt een nieuw SiteMapNode object toegevoegd aan de verzamelingen voor interne tracering van de klasse voor elke regel die uit het bestand wordt gelezen.

Dit codevoorbeeld maakt deel uit van een groter voorbeeld voor de 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

Opmerkingen

Een SiteMapNode object vertegenwoordigt een websitepagina in een siteoverzichtstructuur. SiteMapNode objecten worden tijdens runtime geladen door de statische SiteMap klasse met behulp van een of meer siteoverzichtproviders om siteoverzichtgegevens van permanente opslag in het geheugen te laden. SiteMapNode objecten worden verpakt door de SiteMapNodeItem klasse voor gebruik door webserverbesturingselementen, zoals het SiteMapPath besturingselement.

De SiteMapNode klasse bevat verschillende eigenschappen die worden gebruikt om één pagina op een website te beschrijven, inclusief eigenschappen die een pagina beschrijven, zoals de Url, Titleen Description eigenschappen. Terwijl de eigenschap Url wordt gebruikt door de klasse XmlSiteMapProvider, de standaardsiteoverzichtprovider voor ASP.NET, als zoeksleutel in de interne verzamelingen die de provider gebruikt om knooppunten bij te houden, ondersteunt de SiteMapNode-klasse een eenvoudige Key eigenschap die door siteoverzichtproviders kan worden gebruikt om knooppunten bij te houden. Daarnaast wordt de Url eigenschap gebruikt door navigatiebesturingselementen om hyperlinks naar pagina's in een navigatiestructuur weer te geven. De Title eigenschap is een beschrijvende naam voor de SiteMapNode, is vaak hetzelfde als de HTML-titel van een webformulier en wordt gebruikt door navigatiebesturingselementen om eenvoudige labels weer te geven. Ten slotte is er een NameValueCollection verzameling extra Attributes kenmerken beschikbaar voor siteoverzichtproviders die objecten gebruiken SiteMapNode , maar aanvullende eigenschappen vereisen die niet beschikbaar zijn in de basisklasse SiteMapNode .

Constructors

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

Initialiseert een nieuw exemplaar van de SiteMapNode klasse met behulp van de opgegeven siteoverzichtprovider waarmee het knooppunt, de URL, de titel, de beschrijving, de rollen, aanvullende kenmerken en expliciete en impliciete resourcesleutels voor lokalisatie worden beheerd.

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

Initialiseert een nieuw exemplaar van de SiteMapNode klasse met behulp van de opgegeven URL, een key om de pagina te identificeren die het knooppunt vertegenwoordigt, een titel en beschrijving en de siteoverzichtprovider die het knooppunt beheert.

SiteMapNode(SiteMapProvider, String, String, String)

Initialiseert een nieuw exemplaar van de SiteMapNode klasse met behulp van de opgegeven URL, een key om de pagina te identificeren die het knooppunt vertegenwoordigt, een titel en de siteoverzichtprovider die het knooppunt beheert.

SiteMapNode(SiteMapProvider, String, String)

Initialiseert een nieuw exemplaar van de SiteMapNode klasse met behulp van de opgegeven URL, een key om de pagina te identificeren die het knooppunt vertegenwoordigt en de siteoverzichtprovider die het knooppunt beheert.

SiteMapNode(SiteMapProvider, String)

Initialiseert een nieuw exemplaar van de SiteMapNode klasse met behulp van de opgegeven key instantie om de pagina te identificeren die het knooppunt vertegenwoordigt en de siteoverzichtprovider die het knooppunt beheert.

Eigenschappen

Name Description
Attributes

Hiermee haalt u een verzameling extra kenmerken op of stelt u deze in buiten de sterk getypte eigenschappen die voor de SiteMapNode klasse zijn gedefinieerd.

ChildNodes

Hiermee worden alle onderliggende knooppunten van het huidige SiteMapNode object opgehaald of ingesteld van de bijbehorende SiteMapProvider provider.

Description

Hiermee haalt of stelt u een beschrijving voor de SiteMapNode.

HasChildNodes

Hiermee wordt een waarde opgehaald die aangeeft of de huidige SiteMapNode onderliggende knooppunten heeft.

Item[String]

Hiermee haalt u een aangepast kenmerk op uit de Attributes verzameling of een resourcereeks op basis van de opgegeven sleutel.

Key

Hiermee haalt u een tekenreeks op die een zoeksleutel vertegenwoordigt voor een siteoverzichtknooppunt.

NextSibling

Hiermee haalt u het volgende SiteMapNode knooppunt op hetzelfde hiërarchische niveau op als het huidige, ten opzichte van de ParentNode eigenschap (indien aanwezig).

ParentNode

Hiermee wordt het SiteMapNode object opgehaald of ingesteld dat het bovenliggende element van het huidige knooppunt is.

PreviousSibling

Hiermee haalt u het vorige SiteMapNode object op hetzelfde niveau als het huidige object op ten opzichte van het ParentNode object (indien aanwezig).

Provider

Hiermee haalt u de SiteMapProvider provider op waarmee het SiteMapNode object wordt bijgehouden.

ReadOnly

Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of het siteoverzichtknooppunt kan worden gewijzigd.

ResourceKey

Hiermee haalt u de resourcesleutel op die wordt gebruikt om de SiteMapNode.

Roles

Hiermee wordt een verzameling rollen opgehaald of ingesteld die aan het object zijn gekoppeld, die tijdens het SiteMapNode bijsnijden van de beveiliging worden gebruikt.

RootNode

Hiermee haalt u het hoofdknooppunt van de hoofdprovider op in een siteoverzichtproviderhiërarchie. Als er geen providerhiërarchie bestaat, krijgt de RootNode eigenschap het hoofdknooppunt van de huidige provider.

Title

Hiermee haalt u de titel van het object op of stelt u deze SiteMapNode in.

Url

Hiermee haalt u de URL op van de pagina die het object vertegenwoordigt of stelt u deze SiteMapNode in.

Methoden

Name Description
Clone()

Hiermee maakt u een nieuw knooppunt dat een kopie van het huidige knooppunt is.

Clone(Boolean)

Hiermee maakt u een nieuwe kopie die een kopie is van het huidige knooppunt, optioneel alle bovenliggende en bovenliggende knooppunten van het huidige knooppunt klonen.

Equals(Object)

Hiermee wordt een waarde opgehaald die aangeeft of de huidige SiteMapNode identiek is aan het opgegeven object.

GetAllNodes()

Hiermee wordt een alleen-lezen verzameling opgehaald van alle SiteMapNode objecten die afstammelingen van het aanroepende knooppunt zijn, ongeacht de mate van scheiding.

GetDataSourceView(SiteMapDataSource, String)

Hiermee wordt het SiteMapDataSourceView object opgehaald dat is gekoppeld aan het huidige knooppunt.

GetExplicitResourceString(String, String, Boolean)

Hiermee wordt een gelokaliseerde tekenreeks opgehaald op basis van een SiteMapNode kenmerk om te lokaliseren, een standaardtekenreeks die moet worden geretourneerd als er geen resource wordt gevonden en een Booleaanse waarde die aangeeft of er een uitzondering moet worden gegenereerd als er geen resource wordt gevonden.

GetHashCode()

Retourneert de hash-code van het SiteMapNode object.

GetHierarchicalDataSourceView()

Hiermee wordt het SiteMapHierarchicalDataSourceView object opgehaald dat is gekoppeld aan het huidige knooppunt.

GetImplicitResourceString(String)

Hiermee haalt u een gelokaliseerde tekenreeks op op basis van de kenmerknaam en ResourceKey eigenschap die wordt opgegeven door de SiteMapProvider eigenschap waarmee het SiteMapNode wordt bijgehouden.

GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
IsAccessibleToUser(HttpContext)

Hiermee wordt een waarde opgehaald die aangeeft of het opgegeven siteoverzichtknooppunt kan worden weergegeven door de gebruiker in de opgegeven context.

IsDescendantOf(SiteMapNode)

Hiermee wordt een waarde opgehaald die aangeeft of het huidige siteoverzichtknooppunt een onderliggend item of een directe afstammeling van het opgegeven knooppunt is.

MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Converteert de waarde van dit exemplaar van de SiteMapNode klasse naar de equivalente tekenreeksweergave.

Expliciete interface-implementaties

Name Description
ICloneable.Clone()

Hiermee maakt u een nieuw knooppunt dat een kopie van het huidige knooppunt is. Zie voor een beschrijving van dit lid Clone().

IHierarchyData.GetChildren()

Hiermee worden de hiërarchische onderliggende gegevensitems van het huidige item opgehaald. Zie voor een beschrijving van dit lid GetChildren().

IHierarchyData.GetParent()

Hiermee wordt het hiërarchische bovenliggende item van het huidige item opgehaald. Zie voor een beschrijving van dit lid GetParent().

IHierarchyData.HasChildren

Hiermee wordt een waarde opgehaald die aangeeft of het huidige SiteMapNode object onderliggende knooppunten heeft. Zie voor een beschrijving van dit lid HasChildren.

IHierarchyData.Item

Hiermee haalt u het hiërarchische gegevensitem op. Zie voor een beschrijving van dit lid Item.

IHierarchyData.Path

Hiermee wordt het pad van het hiërarchische gegevensitem opgehaald. Zie voor een beschrijving van dit lid Path.

IHierarchyData.Type

Hiermee haalt u een tekenreeks op die de typenaam van het hiërarchische gegevensitem vertegenwoordigt. Zie voor een beschrijving van dit lid Type.

INavigateUIData.Description

Hiermee haalt u de Description eigenschap van het siteoverzichtknooppunt op. Zie voor een beschrijving van dit lid Description.

INavigateUIData.Name

Hiermee haalt u de Title eigenschap van het siteoverzichtknooppunt op. Zie voor een beschrijving van dit lid Name.

INavigateUIData.NavigateUrl

Hiermee haalt u de Url eigenschap van het siteoverzichtknooppunt op. Zie voor een beschrijving van dit lid NavigateUrl.

INavigateUIData.Value

Hiermee haalt u de Title eigenschap van het siteoverzichtknooppunt op. Zie voor een beschrijving van dit lid Value.

Van toepassing op

Zie ook