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 SiteMapNode objeto que representa uma página.
Sobrecargas
| Nome | Description |
|---|---|
| FindSiteMapNode(String) |
Quando substituído em uma classe derivada, recupera um SiteMapNode objeto que representa a página na URL especificada. |
| FindSiteMapNode(HttpContext) |
Recupera um SiteMapNode objeto que representa a página solicitada no momento usando o objeto especificado HttpContext . |
FindSiteMapNode(String)
Quando substituído em uma classe derivada, recupera um SiteMapNode objeto 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 recuperar um SiteMapNode.
Retornos
Um SiteMapNode que representa a página identificada por rawURL; caso contrário, nullse nenhum correspondente SiteMapNode for encontrado ou se o corte de segurança estiver habilitado e não SiteMapNode 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 usa um método auxiliar, 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
As classes derivadas 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 classe XmlSiteMapProvider, que é o provedor de mapa de site padrão para ASP.NET, usa a URL de um objeto SiteMapNode 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 SiteMapNode objeto que representa a página solicitada no momento usando o objeto especificado HttpContext .
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 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, nullse nenhum correspondente SiteMapNode puder ser encontrado no SiteMapNode contexto da página 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.