SiteMapNode Classe

Definição

Representa um nó na estrutura hierárquica do mapa de sites, tal como a descrita pela SiteMap classe e pelas 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 do site e adicionar elementos a ela. O segundo exemplo de código demonstra como carregar dados do mapa do local a partir de um ficheiro de texto.

O exemplo de código seguinte demonstra como usar o SiteMapNodeCollection construtor para criar uma nova SiteMapNodeCollection coleção e depois 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 seguinte demonstra como analisa SimpleTextSiteMapProvider um ficheiro de texto que contém dados de mapas de sítios em cadeias delimitadas por vírgulas. Um novo SiteMapNode objeto é adicionado às coleções internas de rastreamento da classe para cada linha lida do ficheiro.

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

Observações

Um SiteMapNode objeto representa uma página de site numa estrutura de mapa do site. SiteMapNode Os objetos são carregados pela classe estática SiteMap em tempo de execução, utilizando um ou mais fornecedores de mapas de site para carregar dados de mapas de site a partir do armazenamento persistente para a memória. SiteMapNode os objetos são encapsulados pela SiteMapNodeItem classe para serem usados por controlos do servidor Web, como o controlo SiteMapPath .

A SiteMapNode classe inclui várias propriedades que são usadas para descrever uma única página num site, incluindo propriedades que descrevem uma página, como as Url, Title, e Description propriedades. Enquanto a propriedade Url é usada pela classe XmlSiteMapProvider, que é o fornecedor padrão de mapas de sites para ASP.NET, como chave de consulta nas coleções internas que o fornecedor utiliza para rastrear nós, a classe SiteMapNode suporta uma propriedade básica Key que pode ser usada pelos fornecedores de mapas de sítios para rastrear nós. Além disso, a Url propriedade é utilizada pelos controlos de navegação para renderizar hiperligações para páginas dentro de uma estrutura de navegação. A Title propriedade é um nome amigável para SiteMapNodeo , é frequentemente o mesmo que o título HTML de um Formulário Web, e é usada pelos controlos de navegação para renderizar rótulos simples. Finalmente, uma NameValueCollection coleção de atributos adicionais Attributes está disponível para fornecedores de mapas de site que utilizam SiteMapNode objetos, mas requerem propriedades adicionais que não estão disponíveis na classe base SiteMapNode .

Construtores

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

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

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

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

SiteMapNode(SiteMapProvider, String, String, String)

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

SiteMapNode(SiteMapProvider, String, String)

Inicializa uma nova instância da SiteMapNode classe usando o URL especificado, a key para identificar a página que o nó representa e o fornecedor do mapa do site que gere 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 fornecedor de mapas do site que gere o nó.

Propriedades

Name Description
Attributes

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

ChildNodes

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

Description

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

HasChildNodes

Recebe um valor que indica se a corrente SiteMapNode tem nós filhos.

Item[String]

Obtém ou define um atributo personalizado da Attributes coleção ou uma cadeia de recursos baseada na chave especificada.

Key

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

NextSibling

Obtém o nó seguinte SiteMapNode ao mesmo nível hierárquico do atual, relativamente à ParentNode propriedade (se existir).

ParentNode

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

PreviousSibling

Coloca o objeto anterior SiteMapNode ao mesmo nível do atual, em relação ao ParentNode objeto (se existir).

Provider

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

ReadOnly

Recebe ou define um valor que indica se o nó do mapa do sítio 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 SiteMapNode objeto, usadas durante o corte de segurança.

RootNode

Obtém o nó raiz do fornecedor raiz numa hierarquia de fornecedores de mapas de sites. Se não existir uma hierarquia de fornecedor, a RootNode propriedade fica com o nó raiz do fornecedor atual.

Title

Recebe 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

Name 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 pais e antepassados 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 de apenas leitura de todos os SiteMapNode objetos que são descendentes do nó chamador, independentemente do grau de separação.

GetDataSourceView(SiteMapDataSource, String)

Recupera o SiteMapDataSourceView objeto associado ao nó atual.

GetExplicitResourceString(String, String, Boolean)

Recupera uma cadeia localizada baseada num SiteMapNode atributo a localizar, uma cadeia padrão a devolver se não for encontrado nenhum recurso, e um valor booleano que indica se deve lançar uma exceção caso nenhum recurso seja encontrado.

GetHashCode()

Devolve o código de hash do SiteMapNode objeto.

GetHierarchicalDataSourceView()

Recupera o SiteMapHierarchicalDataSourceView objeto associado ao nó atual.

GetImplicitResourceString(String)

Obtém uma cadeia localizada baseada no nome do atributo e ResourceKey na propriedade que é especificada pelo SiteMapProvider pelo qual o SiteMapNode é rastreado.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsAccessibleToUser(HttpContext)

Recebe um valor que indica se o nó do mapa do local especificado pode ser visualizado pelo utilizador no contexto especificado.

IsDescendantOf(SiteMapNode)

Recebe um valor que indica se o nó atual do mapa do sítio é filho ou descendente direto do nó especificado.

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Converte o valor desta instância da SiteMapNode classe para a sua representação equivalente de cadeias.

Implementações de Interface Explícita

Name Description
ICloneable.Clone()

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

IHierarchyData.GetChildren()

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

IHierarchyData.GetParent()

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

IHierarchyData.HasChildren

Recebe um valor que indica se o objeto atual SiteMapNode tem algum nó filho. Para uma descrição deste elemento, veja HasChildren.

IHierarchyData.Item

Obtém o item de dados hierárquicos. Para uma descrição deste elemento, veja Item.

IHierarchyData.Path

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

IHierarchyData.Type

Recebe uma cadeia que representa o nome do tipo do elemento de dados hierárquico. Para uma descrição deste elemento, veja Type.

INavigateUIData.Description

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

INavigateUIData.Name

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

INavigateUIData.NavigateUrl

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

INavigateUIData.Value

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

Aplica-se a

Ver também