Condividi tramite


SiteMapProvider.FindSiteMapNode Metodo

Definizione

Quando sottoposto a override in una classe derivata, recupera un oggetto SiteMapNode che rappresenta una pagina.

Overload

FindSiteMapNode(String)

Quando sottoposto a override in una classe derivata, recupera un oggetto SiteMapNode che rappresenta la pagina all'URL specificato.

FindSiteMapNode(HttpContext)

Recupera un oggetto SiteMapNode che rappresenta la pagina attualmente richiesta usando l'oggetto HttpContext specificato.

FindSiteMapNode(String)

Quando sottoposto a override in una classe derivata, recupera un oggetto SiteMapNode che rappresenta la pagina all'URL specificato.

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.

Restituisce

SiteMapNode

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.

Esempio

Nell'esempio di codice seguente viene illustrato come implementare il FindSiteMapNode metodo in una classe che implementa la classe astratta SiteMapProvider . SimpleTextSiteMapProvider usa un metodo helper, denominato FindUrl, per ottenere l'URL della pagina attualmente visualizzata dall'oggetto HttpContext .

Questo esempio di codice fa parte di un esempio più ampio fornito per la 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

Commenti

Le classi che derivano dalla SiteMapProvider classe devono implementare il metodo astratto FindSiteMapNode .

L'URL fornito può essere un URL virtuale o assoluto. Potrebbe anche trattarsi di un URL che usa la sintassi relativa all'applicazione, ad esempio ~/apprelativedirectory. Assicurarsi che qualsiasi implementazione del metodo analizzi e gestisca correttamente la FindSiteMapNode sintassi relativa all'applicazione.

La XmlSiteMapProvider classe , ovvero il provider predefinito della mappa del sito per ASP.NET, usa l'URL di un SiteMapNode oggetto come chiave nelle varie raccolte gestite dalle classi. Pertanto, se un SiteMapNode oggetto fornisce un URL, deve essere univoco nell'ambito del provider della mappa del sito. Se non viene specificato alcun URL, viene generato un identificatore univoco per identificare l'oggetto SiteMapNode.

Note per gli implementatori

Quando si esegue l'override del FindSiteMapNode(String) metodo in una classe derivata, assicurarsi di estendere la ricerca a qualsiasi provider figlio, se un SiteMapNode oggetto che corrisponde all'URL non viene trovato dal provider nella mappa del sito corrente e il provider supporta i provider figlio.

Vedi anche

Si applica a

FindSiteMapNode(HttpContext)

Recupera un oggetto SiteMapNode che rappresenta la pagina attualmente richiesta usando l'oggetto HttpContext specificato.

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.

Restituisce

SiteMapNode

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.

Commenti

Il FindSiteMapNode metodo chiama il metodo astratto FindSiteMapNode per recuperare un SiteMapNode oggetto per la pagina attualmente richiesta in base all'URL non elaborato o al percorso virtuale della richiesta. Se non viene trovato alcun oggetto corrispondente SiteMapNode in SiteMap, null viene restituito .

Per impostazione predefinita, il FindSiteMapNode metodo non verifica se un oggetto SiteMapNode è accessibile a un utente.

Vedi anche

Si applica a