SiteMapProvider.FindSiteMapNode Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Quando substituído em uma classe derivada, recupera um objeto SiteMapNode que representa uma página.
Sobrecargas
FindSiteMapNode(String) |
Quando substituída em uma classe derivada, recupera um objeto SiteMapNode que representa a página na URL especificada. |
FindSiteMapNode(HttpContext) |
Recupera um objeto SiteMapNode que representa a página solicitada no momento usando o objeto HttpContext especificado. |
FindSiteMapNode(String)
Quando substituída em uma classe derivada, recupera um objeto SiteMapNode que representa a página na URL especificada.
public:
abstract System::Web::SiteMapNode ^ FindSiteMapNode(System::String ^ rawUrl);
public abstract System.Web.SiteMapNode FindSiteMapNode (string rawUrl);
abstract member FindSiteMapNode : string -> System.Web.SiteMapNode
Public MustOverride Function FindSiteMapNode (rawUrl As String) As SiteMapNode
Parâmetros
- rawUrl
- String
Uma URL que identifica a página para a qual um SiteMapNodeserá recuperado.
Retornos
Um SiteMapNode que representa a página identificada por rawURL
; caso contrário, null
se nenhum SiteMapNode correspondente for encontrado ou se a restrição de segurança estiver habilitada e o SiteMapNode não puder ser retornado para o usuário atual.
Exemplos
O exemplo de código a seguir demonstra como implementar o FindSiteMapNode método em uma classe que implementa a classe abstrata SiteMapProvider . O SimpleTextSiteMapProvider
método auxiliar usa, chamado FindUrl
, para obter a URL da página exibida no momento do HttpContext objeto.
Este exemplo de código faz parte de um exemplo maior fornecido para a SiteMapProvider classe.
// Implement the FindSiteMapNode method.
public override SiteMapNode FindSiteMapNode(string rawUrl)
{
// Does the root node match the URL?
if (RootNode.Url == rawUrl)
{
return RootNode;
}
else
{
SiteMapNode candidate = null;
// Retrieve the SiteMapNode that matches the URL.
lock (this)
{
candidate = GetNode(siteMapNodes, rawUrl);
}
return candidate;
}
}
' Implement the FindSiteMapNode method.
Public Overrides Function FindSiteMapNode(ByVal rawUrl As String) As SiteMapNode
' Does the root node match the URL?
If RootNode.Url = rawUrl Then
Return RootNode
Else
Dim candidate As SiteMapNode = Nothing
' Retrieve the SiteMapNode that matches the URL.
SyncLock Me
candidate = GetNode(siteMapNodes, rawUrl)
End SyncLock
Return candidate
End If
End Function 'FindSiteMapNode
private SiteMapNode GetNode(ArrayList list, string url)
{
for (int i = 0; i < list.Count; i++)
{
DictionaryEntry item = (DictionaryEntry)list[i];
if ((string)item.Key == url)
return item.Value as SiteMapNode;
}
return null;
}
// Get the URL of the currently displayed page.
private string FindCurrentUrl()
{
try
{
// The current HttpContext.
HttpContext currentContext = HttpContext.Current;
if (currentContext != null)
{
return currentContext.Request.RawUrl;
}
else
{
throw new Exception("HttpContext.Current is Invalid");
}
}
catch (Exception e)
{
throw new NotSupportedException("This provider requires a valid context.",e);
}
}
Private Function GetNode(ByVal list As ArrayList, ByVal url As String) As SiteMapNode
Dim i As Integer
For i = 0 To list.Count - 1
Dim item As DictionaryEntry = CType(list(i), DictionaryEntry)
If CStr(item.Key) = url Then
Return CType(item.Value, SiteMapNode)
End If
Next i
Return Nothing
End Function 'GetNode
' Get the URL of the currently displayed page.
Private Function FindCurrentUrl() As String
Try
' The current HttpContext.
Dim currentContext As HttpContext = HttpContext.Current
If Not (currentContext Is Nothing) Then
Return currentContext.Request.RawUrl
Else
Throw New Exception("HttpContext.Current is Invalid")
End If
Catch e As Exception
Throw New NotSupportedException("This provider requires a valid context.", e)
End Try
End Function 'FindCurrentUrl
Comentários
Classes que derivam da SiteMapProvider classe devem implementar o método abstrato FindSiteMapNode .
A URL fornecida pode ser uma URL virtual ou absoluta. Também pode ser uma URL que usa sintaxe relativa ao aplicativo, como ~/apprelativedirectory
. Verifique se qualquer implementação do FindSiteMapNode método analisa e manipula a sintaxe relativa ao aplicativo corretamente.
A XmlSiteMapProvider classe, que é o provedor de mapa de site padrão para ASP.NET, usa a URL de um SiteMapNode objeto como uma chave nas várias coleções que as classes mantêm. Portanto, se uma SiteMapNode URL for fornecida, ela deverá ser exclusiva dentro do escopo do provedor de mapa do site. Se nenhuma URL for fornecida, um identificador exclusivo será gerado para identificar o SiteMapNode.
Notas aos Implementadores
Ao substituir o FindSiteMapNode(String) método em uma classe derivada, estenda a pesquisa para quaisquer provedores filho, se um SiteMapNode objeto que corresponde à URL não for encontrado pelo provedor no mapa do site atual e o provedor oferecer suporte a provedores filho.
Confira também
Aplica-se a
FindSiteMapNode(HttpContext)
Recupera um objeto SiteMapNode que representa a página solicitada no momento usando o objeto HttpContext especificado.
public:
virtual System::Web::SiteMapNode ^ FindSiteMapNode(System::Web::HttpContext ^ context);
public virtual System.Web.SiteMapNode FindSiteMapNode (System.Web.HttpContext context);
abstract member FindSiteMapNode : System.Web.HttpContext -> System.Web.SiteMapNode
override this.FindSiteMapNode : System.Web.HttpContext -> System.Web.SiteMapNode
Public Overridable Function FindSiteMapNode (context As HttpContext) As SiteMapNode
Parâmetros
- context
- HttpContext
O HttpContext usado para corresponder as informações de nó com a URL da página solicitada.
Retornos
Um SiteMapNode que representa a página solicitada no momento; caso contrário, null
, se nenhum SiteMapNode correspondente puder ser localizado no SiteMapNode ou se o contexto da página for null
.
Comentários
O FindSiteMapNode método chama o método abstrato FindSiteMapNode para recuperar um SiteMapNode objeto para a página solicitada no momento com base na URL bruta ou no caminho virtual da solicitação. Se nenhum correspondente SiteMapNode for encontrado no SiteMap, null
será retornado.
O FindSiteMapNode método não verifica se um SiteMapNode é acessível a um usuário, por padrão.