SiteMapProvider.FindSiteMapNode Método

Definición

Cuando se reemplaza en una clase derivada, recupera un objeto SiteMapNode que representa una página.

Sobrecargas

FindSiteMapNode(String)

Cuando se reemplaza en una clase derivada, recupera un objeto SiteMapNode que representa la página en la dirección URL especificada.

FindSiteMapNode(HttpContext)

Recupera un objeto SiteMapNode que representa la página solicitada actualmente mediante el objeto HttpContext especificado.

FindSiteMapNode(String)

Cuando se reemplaza en una clase derivada, recupera un objeto SiteMapNode que representa la página en la dirección 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

Dirección URL que identifica la página cuyo SiteMapNode se va a recuperar.

Devoluciones

SiteMapNode

Es un SiteMapNode que representa la página identificada mediante la rawURL; de lo contrario, es null si no se encuentra ningún SiteMapNode correspondiente o si está habilitado el recorte de seguridad y no se puede devolver el SiteMapNode para el usuario actual.

Ejemplos

En el ejemplo de código siguiente se muestra cómo implementar el FindSiteMapNode método en una clase que implementa la clase abstracta SiteMapProvider . SimpleTextSiteMapProvider usa un método auxiliar, denominado FindUrl, para obtener la dirección URL de la página mostrada actualmente del HttpContext objeto .

Este ejemplo de código forma parte de un ejemplo más grande proporcionado para la SiteMapProvider clase .

// 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

Comentarios

Las clases que derivan de la SiteMapProvider clase deben implementar el método abstracto FindSiteMapNode .

La dirección URL proporcionada puede ser una dirección URL virtual o absoluta. También puede ser una dirección URL que usa la sintaxis relativa a la aplicación, como ~/apprelativedirectory. Asegúrese de que cualquier implementación del método analiza y controla correctamente la sintaxis relativa a la FindSiteMapNode aplicación.

La XmlSiteMapProvider clase , que es el proveedor de mapa de sitio predeterminado para ASP.NET, usa la dirección URL de un SiteMapNode objeto como clave en las distintas colecciones que mantienen las clases. Por lo tanto, si proporciona SiteMapNode una dirección URL, debe ser único dentro del ámbito del proveedor de mapa del sitio. Si no se proporciona ninguna dirección URL, se genera un identificador único para identificar .SiteMapNode

Notas a los implementadores

Al invalidar el FindSiteMapNode(String) método en una clase derivada, asegúrese de extender la búsqueda a cualquier proveedor secundario, si el proveedor no encuentra un SiteMapNode objeto que coincida con la dirección URL en el mapa de sitio actual y el proveedor admite proveedores secundarios.

Consulte también

Se aplica a

FindSiteMapNode(HttpContext)

Recupera un objeto SiteMapNode que representa la página solicitada actualmente mediante el 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

El HttpContext utilizado para establecer la correspondencia de la información del nodo con la dirección URL de la página solicitada.

Devoluciones

SiteMapNode

Es un SiteMapNode que representa la página solicitada actualmente; de lo contrario, es null, si no se encuentra ningún SiteMapNode correspondiente en el SiteMapNode o si el contexto de la página es null.

Comentarios

El FindSiteMapNode método llama al método abstracto FindSiteMapNode para recuperar un SiteMapNode objeto para la página solicitada actualmente en función de la dirección URL sin procesar o la ruta de acceso virtual de la solicitud. Si no se encuentra ningún elemento correspondiente SiteMapNode en , SiteMapnull se devuelve .

El FindSiteMapNode método no comprueba si un objeto SiteMapNode es accesible para un usuario, de forma predeterminada.

Consulte también

Se aplica a