SiteMapNode Classe

Définition

Représente un nœud dans la structure de plan de site hiérarchique telle que celle décrite par la classe SiteMap et les classes qui implémentent la classe abstraite SiteMapProvider.

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
Héritage
SiteMapNode
Implémente

Exemples

Cette section contient deux exemples de code. Le premier exemple de code montre comment créer une collection de nœuds de carte de site et y ajouter des éléments. Le deuxième exemple de code montre comment charger des données de plan de site à partir d’un fichier texte.

L’exemple de code suivant montre comment utiliser le SiteMapNodeCollection constructeur pour créer une SiteMapNodeCollection collection, puis y ajouter des éléments avec la Add méthode .

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

L’exemple de code suivant montre comment analyser SimpleTextSiteMapProvider un fichier texte qui contient des données de plan de site dans des chaînes délimitées par des virgules. Un nouvel SiteMapNode objet est ajouté aux collections de suivi interne de la classe pour chaque ligne lue à partir du fichier.

Cet exemple de code fait partie d’un exemple plus grand fourni pour la SiteMapProvider classe .

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

Remarques

Un SiteMapNode objet représente une page de site Web dans une structure de plan de site. SiteMapNode les objets sont chargés par la classe statique SiteMap au moment de l’exécution à l’aide d’un ou de plusieurs fournisseurs de plan de site pour charger les données de plan de site à partir d’un stockage persistant dans la mémoire. SiteMapNode les objets sont encapsulés par la SiteMapNodeItem classe pour une utilisation par les contrôles serveur web, tels que le SiteMapPath contrôle.

La SiteMapNode classe comprend plusieurs propriétés qui sont utilisées pour décrire une page unique dans un site Web, notamment les propriétés qui décrivent une page, telles que les Urlpropriétés , Titleet Description . Alors que la Url propriété est utilisée par la XmlSiteMapProvider classe, qui est le fournisseur de plan de site par défaut pour ASP.NET, comme clé de recherche dans les collections internes que le fournisseur utilise pour suivre les nœuds, la SiteMapNode classe prend en charge une propriété de base Key qui peut être utilisée par les fournisseurs de plan de site pour suivre les nœuds. En outre, la Url propriété est utilisée par les contrôles de navigation pour afficher des liens hypertexte vers des pages au sein d’une structure de navigation. La Title propriété est un nom convivial pour , SiteMapNodeest souvent identique au titre HTML d’un formulaire web et est utilisée par les contrôles de navigation pour afficher des étiquettes simples. Enfin, une NameValueCollection collection d’attributs supplémentaires Attributes est disponible pour les fournisseurs de plan de site qui utilisent SiteMapNode des objets, mais qui nécessitent des propriétés supplémentaires qui ne sont pas disponibles dans la classe de base SiteMapNode .

Constructeurs

SiteMapNode(SiteMapProvider, String)

Initialise une nouvelle instance de la classe SiteMapNode à l'aide du key spécifié pour identifier la page que le nœud représente et le fournisseur de plan de site qui gère le nœud.

SiteMapNode(SiteMapProvider, String, String)

Initialise une nouvelle instance de la classe SiteMapNode à l'aide de l'URL spécifiée, un key pour identifier la page que le nœud représente et le fournisseur de plan de site qui gère le nœud.

SiteMapNode(SiteMapProvider, String, String, String)

Initialise une nouvelle instance de la classe SiteMapNode à l'aide de l'URL spécifiée, un key pour identifier la page que le nœud représente, un titre, et le fournisseur de plan de site qui gère le nœud.

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

Initialise une nouvelle instance de la classe SiteMapNode à l'aide de l'URL spécifiée, un key pour identifier la page que le nœud représente, un titre et une description, et le fournisseur de plan de site qui gère le nœud.

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

Initialise une nouvelle instance de la classe SiteMapNode à l'aide du fournisseur de plan de site spécifié qui gère les nœud, URL, titre, description, rôles, attributs supplémentaires et clés de ressource explicites et implicites pour la localisation.

Propriétés

Attributes

Obtient ou définit une collection d'attributs supplémentaires au-delà des propriétés fortement typées définies pour la classe SiteMapNode.

ChildNodes

Obtient ou définit tous les nœuds enfants de l'objet SiteMapNode actuel issus du fournisseur SiteMapProvider associé.

Description

Obtient ou définit une description de l'objet SiteMapNode.

HasChildNodes

Obtient une valeur indiquant si le SiteMapNode actuel possède des nœuds enfants.

Item[String]

Obtient ou définit un attribut personnalisé issu de la collection Attributes ou une chaîne de ressource fondée sur la clé spécifiée.

Key

Obtient une chaîne qui représente une clé de recherche pour un nœud de plan de site.

NextSibling

Obtient le nœud SiteMapNode suivant sur le même niveau hiérarchique que le nœud actuel, selon la propriété ParentNode (si elle existe).

ParentNode

Obtient ou définit l'objet SiteMapNode qui constitue le parent du nœud actuel.

PreviousSibling

Obtient l'objet SiteMapNode précédent sur le même niveau que l'objet actuel, en fonction de l'objet ParentNode (s'il existe).

Provider

Obtient le fournisseur SiteMapProvider qui effectue le suivi de l'objet SiteMapNode.

ReadOnly

Obtient ou définit une valeur qui indique si le nœud de plan de site peut être modifié.

ResourceKey

Obtient ou définit la clé de ressource utilisée pour localiser le SiteMapNode.

Roles

Obtient ou définit une collection de rôles associés à l’objet SiteMapNode, qui est utilisée pendant le filtrage de sécurité.

RootNode

Obtient le nœud racine du fournisseur racine dans une hiérarchie de fournisseur de plan de site. Si aucune hiérarchie de fournisseur n'existe, la propriété RootNode obtient le nœud racine du fournisseur actuel.

Title

Obtient ou définit le titre de l'objet SiteMapNode.

Url

Obtient ou définit l'URL de la page que l'objet SiteMapNode représente.

Méthodes

Clone()

Crée un objet qui constitue une copie du nœud actuel.

Clone(Boolean)

Crée une copie qui constitue une copie du nœud actuel, en clonant éventuellement tous les nœuds parents et ancêtres du nœud actuel.

Equals(Object)

Obtient une valeur indiquant si le SiteMapNode actuel est identique à l'objet spécifié.

GetAllNodes()

Récupère une collection en lecture seule de tous les objets SiteMapNode qui sont descendants du nœud appelant, indépendamment du degré de séparation.

GetDataSourceView(SiteMapDataSource, String)

Récupère l'objet SiteMapDataSourceView associé au nœud courant.

GetExplicitResourceString(String, String, Boolean)

Récupère une chaîne localisée selon un attribut SiteMapNode à localiser, une chaîne par défaut à retourner si aucune ressource n'est trouvée, et une valeur Boolean qui indique s'il faut lever une exception si aucune ressource n'est trouvée.

GetHashCode()

Retourne le code de hachage de l'objet SiteMapNode.

GetHierarchicalDataSourceView()

Récupère l'objet SiteMapHierarchicalDataSourceView associé au nœud courant.

GetImplicitResourceString(String)

Obtient une chaîne localisée selon le nom d'attribut et la propriété ResourceKey spécifiées par le SiteMapProvider qui sert au suivi du SiteMapNode.

GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
IsAccessibleToUser(HttpContext)

Obtient une valeur qui indique si l'utilisateur peut afficher le nœud de plan de site spécifié dans le contexte spécifié.

IsDescendantOf(SiteMapNode)

Obtient une valeur qui indique si le nœud de plan de site actuel est un enfant ou un descendant direct du nœud spécifié.

MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

Convertit la valeur de cette instance de la classe SiteMapNode en une représentation équivalente sous forme de chaîne.

Implémentations d’interfaces explicites

ICloneable.Clone()

Crée un objet qui constitue une copie du nœud actuel. Pour obtenir une description de ce membre, consultez Clone().

IHierarchyData.GetChildren()

Récupère les éléments de données enfants hiérarchiques de l’élément actuel. Pour obtenir une description de ce membre, consultez GetChildren().

IHierarchyData.GetParent()

Récupère le parant hiérarchique de l’élément actuel. Pour obtenir une description de ce membre, consultez GetParent().

IHierarchyData.HasChildren

Obtient une valeur indiquant si l’objet SiteMapNode actuel possède des nœuds enfants. Pour obtenir une description de ce membre, consultez HasChildren.

IHierarchyData.Item

Obtient l'élément de données hiérarchiques. Pour obtenir une description de ce membre, consultez Item.

IHierarchyData.Path

Obtient le chemin d’accès à l’élément de données hiérarchiques. Pour obtenir une description de ce membre, consultez Path.

IHierarchyData.Type

Obtient une chaîne qui représente le nom du type de l'élément de données hiérarchiques. Pour obtenir une description de ce membre, consultez Type.

INavigateUIData.Description

Récupère la propriété Description du nœud de plan de site. Pour obtenir une description de ce membre, consultez Description.

INavigateUIData.Name

Récupère la propriété Title du nœud de plan de site. Pour obtenir une description de ce membre, consultez Name.

INavigateUIData.NavigateUrl

Récupère la propriété Url du nœud de plan de site. Pour obtenir une description de ce membre, consultez NavigateUrl.

INavigateUIData.Value

Récupère la propriété Title du nœud de plan de site. Pour obtenir une description de ce membre, consultez Value.

S’applique à

Voir aussi