SiteMapProvider.FindSiteMapNode Metodo

Definizione

Quando sottoposto a override in una classe derivata, recupera un oggetto SiteMapNode che rappresenta una pagina.When overridden in a derived class, retrieves a SiteMapNode object that represents a page.

Overload

FindSiteMapNode(String)

Quando sottoposto a override in una classe derivata, recupera un oggetto SiteMapNode che rappresenta la pagina all'URL specificato.When overridden in a derived class, retrieves a SiteMapNode object that represents the page at the specified URL.

FindSiteMapNode(HttpContext)

Recupera un oggetto SiteMapNode che rappresenta la pagina attualmente richiesta usando l'oggetto HttpContext specificato.Retrieves a SiteMapNode object that represents the currently requested page using the specified HttpContext object.

FindSiteMapNode(String)

Quando sottoposto a override in una classe derivata, recupera un oggetto SiteMapNode che rappresenta la pagina all'URL specificato.When overridden in a derived class, retrieves a SiteMapNode object that represents the page at the specified URL.

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

Parametri

rawUrl
String

URL che identifica la pagina per la quale recuperare un elemento SiteMapNode.A URL that identifies the page for which to retrieve a SiteMapNode.

Restituisce

Elemento SiteMapNode che rappresenta la pagina identificata da rawURL; in caso contrario null se non viene trovato alcun elemento SiteMapNode corrispondente oppure se la rimozione di sicurezza è attivata e non è possibile restituire l'elemento SiteMapNode per l'utente corrente.A SiteMapNode that represents the page identified by rawURL; otherwise, null, if no corresponding SiteMapNode is found or if security trimming is enabled and the SiteMapNode cannot be returned for the current user.

Esempi

Nell'esempio di codice seguente viene illustrato come implementare FindSiteMapNode il metodo in una classe che implementa la SiteMapProvider classe astratta.The following code example demonstrates how to implement the FindSiteMapNode method in a class that implements the abstract SiteMapProvider class. Usa un metodo helper, denominato FindUrl, per ottenere l'URL della pagina HttpContext attualmente visualizzata dall'oggetto. SimpleTextSiteMapProviderThe SimpleTextSiteMapProvider uses a helper method, named FindUrl, to get the URL of the currently displayed page from the HttpContext object.

Questo esempio di codice fa parte di un esempio più ampio fornito SiteMapProvider per la classe.This code example is part of a larger example provided for the SiteMapProvider class.

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

Commenti

Le classi che derivano SiteMapProvider dalla classe devono implementare il FindSiteMapNode metodo abstract.Classes that derive from the SiteMapProvider class must implement the abstract FindSiteMapNode method.

L'URL specificato può essere un URL virtuale o assoluto.The URL provided can be a virtual or absolute URL. Potrebbe anche essere un URL che usa la sintassi relativa all'applicazione, ad esempio ~/apprelativedirectory.It might also be a URL that uses application-relative syntax, such as ~/apprelativedirectory. Verificare che qualsiasi implementazione del metodo FindSiteMapNode analizzi e gestisca correttamente la sintassi relativa all'applicazione.Ensure that any implementation of the FindSiteMapNode method parse and handle application-relative syntax properly.

La XmlSiteMapProvider classe, che è il provider della mappa del sito predefinito per ASP.NET, usa l'URL SiteMapNode di un oggetto come chiave nelle varie raccolte gestite dalle classi.The XmlSiteMapProvider class, which is the default site map provider for ASP.NET, uses the URL of a SiteMapNode object as a key in the various collections that the classes maintain. Se pertanto un oggetto SiteMapNode fornisce un URL, deve essere univoco nell'ambito del provider della mappa del sito.Therefore, if a SiteMapNode provides a URL, it must be unique within the scope of the site map provider. Se non viene specificato alcun URL, viene generato un identificatore univoco per identificare SiteMapNode.If no URL is provided, a unique identifier is generated to identify the SiteMapNode.

Note per gli eredi

Quando si esegue l' FindSiteMapNode(String) override del metodo in una classe derivata, assicurarsi di estendere la ricerca a qualsiasi provider figlio, se SiteMapNode un oggetto che corrisponde all'URL non viene trovato dal provider nella mappa del sito corrente e il provider supporta i provider figlio.When overriding the FindSiteMapNode(String) method in a derived class, be sure to extend the search to any child providers, if a SiteMapNode object that matches the URL is not found by the provider in the current site map and the provider supports child providers.

Vedi anche

FindSiteMapNode(HttpContext)

Recupera un oggetto SiteMapNode che rappresenta la pagina attualmente richiesta usando l'oggetto HttpContext specificato.Retrieves a SiteMapNode object that represents the currently requested page using the specified HttpContext object.

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

Parametri

context
HttpContext

Elemento HttpContext usato per associare le informazioni sul nodo all'URL della pagina richiesta.The HttpContext used to match node information with the URL of the requested page.

Restituisce

Elemento SiteMapNode che rappresenta la pagina attualmente richiesta; in caso contrario null se non è possibile trovare alcun elemento SiteMapNode corrispondente in SiteMapNode oppure se il contesto della pagina è null.A SiteMapNode that represents the currently requested page; otherwise, null, if no corresponding SiteMapNode can be found in the SiteMapNode or if the page context is null.

Commenti

Il FindSiteMapNode metodo chiama il metodo FindSiteMapNode astratto per recuperare un SiteMapNode oggetto per la pagina attualmente richiesta in base all'URL non elaborato o al percorso virtuale della richiesta.The FindSiteMapNode method calls the abstract FindSiteMapNode method to retrieve a SiteMapNode object for the currently requested page based on the raw URL or the virtual path of the request. Se non viene SiteMapNode trovato alcun oggetto SiteMapcorrispondente in null , viene restituito.If no corresponding SiteMapNode is found in the SiteMap, null is returned.

Per FindSiteMapNode impostazione predefinita, il metodo non SiteMapNode verifica se un oggetto è accessibile a un utente.The FindSiteMapNode method does not check whether a SiteMapNode is accessible to a user, by default.

Vedi anche

Si applica a