SiteMapProvider.FindSiteMapNode Método
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.
Quando é sobreposto numa classe derivada, recupera um SiteMapNode objeto que representa uma página.
Sobrecargas
| Name | Description |
|---|---|
| FindSiteMapNode(String) |
Quando é sobreposto numa 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 atualmente solicitada usando o objeto especificado HttpContext . |
FindSiteMapNode(String)
Quando é sobreposto numa 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.
Devoluções
A que representa a página identificada por SiteMapNode; caso contrário, rawURL, se não for encontrado nenhum correspondente null ou se o SiteMapNode ajuste de segurança estiver ativado e o SiteMapNode não puder ser devolvido ao utilizador atual.
Exemplos
O exemplo de código seguinte demonstra como implementar o FindSiteMapNode método numa classe que implementa a classe abstrata SiteMapProvider . Utiliza SimpleTextSiteMapProvider um método auxiliar, chamado FindUrl, para obter o URL da página atualmente apresentada a partir 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
Observações
As classes que derivam da SiteMapProvider classe devem implementar o método abstrato FindSiteMapNode .
A URL fornecida pode ser virtual ou absoluta. Pode também ser uma URL que utiliza sintaxe relativa à aplicação, como ~/apprelativedirectory. Certifique-se de que qualquer implementação do FindSiteMapNode método analisa e lida corretamente com a sintaxe relativa à aplicação.
A classe XmlSiteMapProvider, que é o fornecedor padrão de mapas de sites para ASP.NET, utiliza a URL de um objeto SiteMapNode como chave nas várias coleções que as classes mantêm. Portanto, se a SiteMapNode fornecer uma URL, esta deve ser única dentro do âmbito do fornecedor do mapa do site. Se não for fornecido um URL, é gerado um identificador único para identificar o SiteMapNode.
Notas para Implementadores
Ao sobrescrever o FindSiteMapNode(String) método numa classe derivada, certifique-se de estender a pesquisa a quaisquer fornecedores filhos, caso um SiteMapNode objeto que corresponda à URL não seja encontrado pelo fornecedor no mapa atual do site e este suporte fornecedores filhos.
Ver também
Aplica-se a
FindSiteMapNode(HttpContext)
Recupera um SiteMapNode objeto que representa a página atualmente solicitada 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
É HttpContext usado para corresponder a informação do nó com a URL da página solicitada.
Devoluções
A SiteMapNode que representa a página atualmente solicitada; caso contrário, null, se não houver correspondência SiteMapNode encontrada no SiteMapNode ou se o contexto da página for null.
Observações
O FindSiteMapNode método chama o método abstrato FindSiteMapNode para recuperar um SiteMapNode objeto para a página atualmente solicitada com base no URL bruto ou no caminho virtual do pedido. Se não for encontrado correspondente SiteMapNode no SiteMap, null é devolvido.
O FindSiteMapNode método não verifica se a SiteMapNode é acessível ao utilizador, por defeito.