SiteMapProvider.FindSiteMapNode Método

Definição

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.

Ver também

Aplica-se a