Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo SiteMapProvider.FindSiteMapNode (String)

 

Data di pubblicazione: ottobre 2016

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

Spazio dei nomi:   System.Web
Assembly:  System.Web (in System.Web.dll)

public abstract SiteMapNode FindSiteMapNode(
	string rawUrl
)

Parametri

rawUrl
Type: System.String

Un URL che identifica la pagina per cui recuperare un SiteMapNode.

Valore restituito

Type: System.Web.SiteMapNode

Oggetto SiteMapNode che rappresenta la pagina identificata da rawURL; in caso contrario, null, se non corrispondente SiteMapNode viene trovato o se è abilitata la rimozione della protezione e SiteMapNode non può essere restituito per l'utente corrente.

Le classi che derivano dalla SiteMapProvider classe deve implementare la classe astratta FindSiteMapNode metodo.

L'URL specificato può essere un URL assoluto o virtuale. Potrebbe inoltre essere un URL che utilizza la sintassi relativa all'applicazione, ad esempio ~/apprelativedirectory. Assicurarsi che qualsiasi implementazione di FindSiteMapNode metodo analizzare e gestire correttamente la sintassi relativa all'applicazione.

La XmlSiteMapProvider classe, che è il provider di mappa del sito predefinito per ASP.NET, utilizza l'URL di un SiteMapNode oggetto come chiave nei vari insiemi gestiti dalle classi. Pertanto, se un SiteMapNode fornisce un URL, deve essere univoco all'interno dell'ambito del provider di mappa del sito. Se viene fornito alcun URL, viene generato un identificatore univoco per identificare il SiteMapNode.

Note per gli eredi:

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

Esempio di codice riportato di seguito viene illustrato come implementare il FindSiteMapNode metodo in una classe che implementa la classe astratta SiteMapProvider (classe). Il SimpleTextSiteMapProvider utilizza un metodo di supporto, denominato FindUrl, per ottenere l'URL della pagina attualmente visualizzata dal HttpContext oggetto.

Questo esempio di codice fa parte di un esempio più esaustivo 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;
  }
}
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);
  }
}

.NET Framework
Disponibile da 2.0
Torna all'inizio
Mostra: