SiteMapNode Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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 |
| SiteMapNode(SiteMapProvider, String, String, String) |
Inicializa uma nova instância da SiteMapNode classe usando a URL especificada, para |
| SiteMapNode(SiteMapProvider, String, String) |
Inicializa uma nova instância da SiteMapNode classe usando o URL especificado, a |
| SiteMapNode(SiteMapProvider, String) |
Inicializa uma nova instância da SiteMapNode classe, usando a especificada |
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. |