SiteMapNode Classe

Definição

Representa um nó na estrutura hierárquica de mapa do site como a descrita pela classe SiteMap e as classes que implementam a classe SiteMapProvider abstrata.

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
Herança
SiteMapNode
Implementações

Exemplos

Esta seção contém dois exemplos de código. O primeiro exemplo de código demonstra como criar um novo conjunto de nós de mapa de sites e adicionar elementos a ele. O segundo exemplo de código demonstra como carregar dados do mapa do site de um arquivo de texto.

O exemplo de código a seguir demonstra como usar o SiteMapNodeCollection construtor para criar uma nova SiteMapNodeCollection coleção e, em seguida, adicionar elementos a ela com o Add método .

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

O exemplo de código a seguir demonstra como o SimpleTextSiteMapProvider analisa um arquivo de texto que contém dados do mapa do site em cadeias de caracteres delimitadas por vírgulas. Um novo SiteMapNode objeto é adicionado às coleções de acompanhamento internas da classe para cada linha que é lida do arquivo.

Este exemplo de código faz parte de um exemplo maior fornecido para a 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

Comentários

Um SiteMapNode objeto representa uma página do site em uma estrutura de mapa do site. SiteMapNode os objetos são carregados pela classe estática SiteMap em tempo de execução usando um ou mais provedores de mapa de site para carregar dados do mapa do site do armazenamento persistente na memória. SiteMapNode os objetos são encapsulados pela SiteMapNodeItem classe para uso por controles de servidor Web, como o SiteMapPath controle .

A SiteMapNode classe inclui várias propriedades que são usadas para descrever uma única página em um site da Web, incluindo propriedades que descrevem uma página, como as Urlpropriedades , Titlee Description . Enquanto a Url propriedade é usada pela XmlSiteMapProvider classe , que é o provedor de mapa de site padrão para ASP.NET, como uma chave de pesquisa nas coleções internas que o provedor usa para rastrear nós, a SiteMapNode classe dá suporte a uma propriedade básica Key que pode ser usada por provedores de mapa de site para rastrear nós. Além disso, a Url propriedade é usada por controles de navegação para renderizar hiperlinks em páginas dentro de uma estrutura de navegação. A Title propriedade é um nome amigável para o SiteMapNode, geralmente é igual ao título HTML de um Formulário web e é usada por controles de navegação para renderizar rótulos simples. Por fim, uma NameValueCollection coleção de atributos adicionais Attributes está disponível para provedores de mapa de site que usam SiteMapNode objetos, mas exigem propriedades adicionais que não estão disponíveis na classe base SiteMapNode .

Construtores

SiteMapNode(SiteMapProvider, String)

Inicializa uma nova instância da classe SiteMapNode usando o key especificado para identificar a página que o nó representa e o provedor de mapa de site que gerencia o nó.

SiteMapNode(SiteMapProvider, String, String)

Inicializa uma nova instância da classe SiteMapNode usando a URL especificada, um key para identificar a página que o nó representa e o provedor de mapa de site que gerencia o nó.

SiteMapNode(SiteMapProvider, String, String, String)

Inicializa uma nova instância da classe SiteMapNode usando a URL especificada, um key para identificar a página que o nó representa, um bloco e o provedor de mapa de site que gerencia o nó.

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

Inicializa uma nova instância da classe SiteMapNode usando a URL especificada, um key para identificar a página que o nó representa, um bloco, a descrição e o provedor de mapa de site que gerencia o nó.

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

Inicializa uma nova instância da classe SiteMapNode usando o provedor de mapa de site que gerencia o nó, a URL, o título, a descrição, as funções, os atributos adicionais e as chaves de recurso explícito e implícito para localização.

Propriedades

Attributes

Obtém ou define uma coleção de atributos adicionais além das propriedades fortemente tipadas definidas para a classe SiteMapNode.

ChildNodes

Obtém ou define todos os nós filho do objeto SiteMapNode atual do provedor SiteMapProvider associado.

Description

Obtém ou define uma descrição do SiteMapNode.

HasChildNodes

Obtém um valor que indica se o SiteMapNode atual tem nós filho.

Item[String]

Obtém ou define um atributo personalizado da coleção Attributes ou de uma cadeia de caracteres de recurso com base na chave especificada.

Key

Obtém uma cadeia de caracteres que representa uma chave de pesquisa para um nó do mapa de site.

NextSibling

Obtém o próximo nó SiteMapNode no mesmo nível hierárquico que o do nó atual, relativo à propriedade ParentNode (se houver).

ParentNode

Obtém ou define o objeto SiteMapNode que é o pai do nó atual.

PreviousSibling

Obtém o objeto SiteMapNode anterior no mesmo nível que o atual, relativo ao objeto ParentNode (se houver).

Provider

Obtém o provedor SiteMapProvider pelo qual o objeto SiteMapNode é rastreado.

ReadOnly

Obtém ou define um valor que indica se o nó do mapa de site pode ser modificado.

ResourceKey

Obtém ou define a chave de recurso que é usada para localizar o SiteMapNode.

Roles

Obtém ou define uma coleção de funções que estão associadas ao objeto SiteMapNode usado durante a remoção de segurança.

RootNode

Obtém o nó raiz do provedor raiz em uma hierarquia do provedor do mapa de site. Se nenhuma hierarquia de provedor existir, a propriedade RootNode obterá o nó raiz do provedor atual.

Title

Obtém ou define o título do objeto SiteMapNode.

Url

Obtém ou define a URL da página que o objeto SiteMapNode representa.

Métodos

Clone()

Cria um novo nó que é uma cópia do nó atual.

Clone(Boolean)

Cria uma nova cópia que é uma cópia do nó atual, clonando opcionalmente todos os nós pai e ancestrais do nó atual.

Equals(Object)

Obtém um valor que indica se o SiteMapNode atual é idêntico ao objeto especificado.

GetAllNodes()

Recupera uma coleção somente leitura de todos os objetos SiteMapNode que são descendentes do nó de chamada, independentemente do grau de separação.

GetDataSourceView(SiteMapDataSource, String)

Recupera o objeto SiteMapDataSourceView associado ao nó atual.

GetExplicitResourceString(String, String, Boolean)

Recuperará uma cadeia de caracteres localizada com base em um atributo SiteMapNode a ser localizado, uma cadeia de caracteres padrão a ser retornada se nenhum recurso for localizado e um valor booliano que indica se uma exceção será gerada se nenhum recurso for localizado.

GetHashCode()

Retorna o código hash do objeto SiteMapNode.

GetHierarchicalDataSourceView()

Recupera o objeto SiteMapHierarchicalDataSourceView associado ao nó atual.

GetImplicitResourceString(String)

Obtém uma cadeia de caracteres localizada com base no nome do atributo e na propriedade ResourceKey especificada pelo SiteMapProvider pela qual o SiteMapNode é rastreado.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsAccessibleToUser(HttpContext)

Obtém um valor que indica se o nó do mapa de site especificado pode ser exibido pelo usuário no contexto especificado.

IsDescendantOf(SiteMapNode)

Obtém um valor que indica se o nó do mapa de site atual é um filho ou um descendente direto do nó especificado.

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Converte o valor desta instância da classe SiteMapNode em sua representação de cadeia de caracteres equivalente.

Implantações explícitas de interface

ICloneable.Clone()

Cria um novo nó que é uma cópia do nó atual. Para obter uma descrição desse membro, confira Clone().

IHierarchyData.GetChildren()

Recupera os itens de dados filhos hierárquicos do item atual. Para obter uma descrição desse membro, confira GetChildren().

IHierarchyData.GetParent()

Recupera o pai hierárquico do item atual. Para obter uma descrição desse membro, confira GetParent().

IHierarchyData.HasChildren

Obtém um valor que indica se o objeto SiteMapNode atual tem nós filho. Para obter uma descrição desse membro, confira HasChildren.

IHierarchyData.Item

Obtém o item de dados hierárquicos. Para obter uma descrição desse membro, confira Item.

IHierarchyData.Path

Obtém o caminho do item de dados hierárquicos. Para obter uma descrição desse membro, confira Path.

IHierarchyData.Type

Obtém uma cadeia de caracteres que representa o nome do tipo do item de dados hierárquicos. Para obter uma descrição desse membro, confira Type.

INavigateUIData.Description

Obtém a propriedade Description do nó do mapa de site. Para obter uma descrição desse membro, confira Description.

INavigateUIData.Name

Obtém a propriedade Title do nó do mapa de site. Para obter uma descrição desse membro, confira Name.

INavigateUIData.NavigateUrl

Obtém a propriedade Url do nó do mapa de site. Para obter uma descrição desse membro, confira NavigateUrl.

INavigateUIData.Value

Obtém a propriedade Title do nó do mapa de site. Para obter uma descrição desse membro, confira Value.

Aplica-se a

Confira também