SiteMapProvider.FindSiteMapNode Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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
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
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.