SiteMapProvider.FindSiteMapNode Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Wanneer deze wordt overschreven in een afgeleide klasse, haalt u een SiteMapNode object op dat een pagina vertegenwoordigt.
Overloads
| Name | Description |
|---|---|
| FindSiteMapNode(String) |
Wanneer deze wordt overschreven in een afgeleide klasse, haalt u een SiteMapNode object op dat de pagina aangeeft op de opgegeven URL. |
| FindSiteMapNode(HttpContext) |
Hiermee wordt een SiteMapNode object opgehaald dat de momenteel aangevraagde pagina vertegenwoordigt met behulp van het opgegeven HttpContext object. |
FindSiteMapNode(String)
Wanneer deze wordt overschreven in een afgeleide klasse, haalt u een SiteMapNode object op dat de pagina aangeeft op de opgegeven 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
Parameters
- rawUrl
- String
Een URL die de pagina identificeert waarvoor een SiteMapNode.
Retouren
Een SiteMapNode die de pagina vertegenwoordigt die wordt geïdentificeerd door rawURL; anders, nullals er geen overeenkomende SiteMapNode is gevonden of als beveiligingsbeperkingen zijn ingeschakeld en de SiteMapNode pagina niet kan worden geretourneerd voor de huidige gebruiker.
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u de FindSiteMapNode methode implementeert in een klasse die de abstracte SiteMapProvider klasse implementeert. Hierbij SimpleTextSiteMapProvider wordt een helpermethode met de naam FindUrlgebruikt om de URL op te halen van de momenteel weergegeven pagina van het HttpContext object.
Dit codevoorbeeld maakt deel uit van een groter voorbeeld voor de SiteMapProvider klasse.
// 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
Opmerkingen
Klassen die zijn afgeleid van de SiteMapProvider klasse, moeten de abstracte FindSiteMapNode methode implementeren.
De opgegeven URL kan een virtuele of absolute URL zijn. Het kan ook een URL zijn die gebruikmaakt van toepassings-relatieve syntaxis, zoals ~/apprelativedirectory. Zorg ervoor dat elke implementatie van de methode de FindSiteMapNode toepassings-relatieve syntaxis parseert en verwerkt.
De klasse XmlSiteMapProvider, de standaardsiteoverzichtprovider voor ASP.NET, gebruikt de URL van een SiteMapNode-object als sleutel in de verschillende verzamelingen die de klassen onderhouden. Als een SiteMapNode URL een URL levert, moet deze daarom uniek zijn binnen het bereik van de siteoverzichtprovider. Als er geen URL wordt opgegeven, wordt er een unieke id gegenereerd om de SiteMapNode.
Notities voor uitvoerders
Wanneer u de FindSiteMapNode(String) methode in een afgeleide klasse overschrijft, moet u de zoekopdracht uitbreiden naar onderliggende providers als een SiteMapNode object dat overeenkomt met de URL niet wordt gevonden door de provider in het huidige siteoverzicht en de provider ondersteuning biedt voor onderliggende providers.
Zie ook
Van toepassing op
FindSiteMapNode(HttpContext)
Hiermee wordt een SiteMapNode object opgehaald dat de momenteel aangevraagde pagina vertegenwoordigt met behulp van het opgegeven 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
Parameters
- context
- HttpContext
De HttpContext knooppuntgegevens worden vergeleken met de URL van de aangevraagde pagina.
Retouren
Een SiteMapNode die de momenteel aangevraagde pagina vertegenwoordigt; anders, nullals er geen overeenkomende SiteMapNode pagina kan worden gevonden in of SiteMapNode als de paginacontext is null.
Opmerkingen
Met FindSiteMapNode de methode wordt de abstracte FindSiteMapNode methode aangeroepen om een SiteMapNode object op te halen voor de momenteel aangevraagde pagina op basis van de onbewerkte URL of het virtuele pad van de aanvraag. Als er geen overeenkomende waarde SiteMapNode wordt gevonden in de SiteMap, null wordt deze geretourneerd.
De FindSiteMapNode methode controleert niet of een SiteMapNode gebruiker standaard toegankelijk is.