Compartilhar via


SiteMapNode Classe

Definição

Representa um nó na estrutura de mapa de site hierárquico, como o SiteMap descrito pela classe e classes que implementam a classe abstrata 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
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 uma nova coleção de nós de mapa de site e adicionar elementos a ela. 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 analisa SimpleTextSiteMapProvider um arquivo de texto que contém dados de mapa de site em cadeias de caracteres delimitadas por vírgulas. Um novo SiteMapNode objeto é adicionado às coleções internas de acompanhamento 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 de 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 o Url, Titlee Description as propriedades. 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 é o mesmo que o 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

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

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

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

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

SiteMapNode(SiteMapProvider, String, String, String)

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

SiteMapNode(SiteMapProvider, String, String)

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

SiteMapNode(SiteMapProvider, String)

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

Propriedades

Nome Description
Attributes

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

ChildNodes

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

Description

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

HasChildNodes

Obtém um valor que indica se a corrente SiteMapNode tem nós filho.

Item[String]

Obtém ou define um atributo personalizado da Attributes coleção 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ó de mapa de site.

NextSibling

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

ParentNode

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

PreviousSibling

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

Provider

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

ReadOnly

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

ResourceKey

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

Roles

Obtém ou define uma coleção de funções associadas ao objeto, usadas durante o SiteMapNode corte de segurança.

RootNode

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

Title

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

Url

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

Métodos

Nome Description
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, opcionalmente clonando todos os nós pai e ancestral do nó atual.

Equals(Object)

Obtém um valor que indica se a corrente SiteMapNode é idêntica ao objeto especificado.

GetAllNodes()

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

GetDataSourceView(SiteMapDataSource, String)

Recupera o SiteMapDataSourceView objeto associado ao nó atual.

GetExplicitResourceString(String, String, Boolean)

Recupera uma cadeia de caracteres localizada com base em um SiteMapNode atributo para localizar, uma cadeia de caracteres padrão a ser retornada se nenhum recurso for encontrado e um valor booliano indicando se uma exceção será gerada se nenhum recurso for encontrado.

GetHashCode()

Retorna o código hash do SiteMapNode objeto.

GetHierarchicalDataSourceView()

Recupera o SiteMapHierarchicalDataSourceView objeto associado ao nó atual.

GetImplicitResourceString(String)

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

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsAccessibleToUser(HttpContext)

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

IsDescendantOf(SiteMapNode)

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

MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
ToString()

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

Implantações explícitas de interface

Nome Description
ICloneable.Clone()

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

IHierarchyData.GetChildren()

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

IHierarchyData.GetParent()

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

IHierarchyData.HasChildren

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

IHierarchyData.Item

Obtém o item de dados hierárquico. Para obter uma descrição deste membro, consulte Item.

IHierarchyData.Path

Obtém o caminho do item de dados hierárquico. Para obter uma descrição deste membro, consulte Path.

IHierarchyData.Type

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

INavigateUIData.Description

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

INavigateUIData.Name

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

INavigateUIData.NavigateUrl

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

INavigateUIData.Value

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

Aplica-se a

Confira também