SiteMapProvider.FindSiteMapNode Método

Definição

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

SiteMapNode

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

SiteMapNode

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.

Confira também

Aplica-se a