SiteMapProvider.FindSiteMapNode Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Beim Überschreiben in einer abgeleiteten Klasse ruft ein SiteMapNode Objekt ab, das eine Seite darstellt.
Überlädt
| Name | Beschreibung |
|---|---|
| FindSiteMapNode(String) |
Beim Überschreiben in einer abgeleiteten Klasse ruft ein SiteMapNode Objekt ab, das die Seite an der angegebenen URL darstellt. |
| FindSiteMapNode(HttpContext) |
Ruft ein SiteMapNode Objekt ab, das die aktuell angeforderte Seite mithilfe des angegebenen HttpContext Objekts darstellt. |
FindSiteMapNode(String)
Beim Überschreiben in einer abgeleiteten Klasse ruft ein SiteMapNode Objekt ab, das die Seite an der angegebenen URL darstellt.
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
Parameter
- rawUrl
- String
Eine URL, die die Seite identifiziert, für die ein Abgerufen werden SiteMapNodesoll.
Gibt zurück
A SiteMapNode that represents the page identified by rawURL; otherwise, if no nullcorresponding SiteMapNode is found or if security trimming is enabled and the SiteMapNode cannot be returned for the current user.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie die FindSiteMapNode Methode in einer Klasse implementiert wird, die die abstrakte SiteMapProvider Klasse implementiert. Die SimpleTextSiteMapProvider Verwendet eine Hilfsmethode namens FindUrl, um die URL der aktuell angezeigten Seite aus dem HttpContext Objekt abzurufen.
Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die SiteMapProvider Klasse bereitgestellt wird.
// 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
Hinweise
Klassen, die von der SiteMapProvider Klasse abgeleitet werden, müssen die abstrakte FindSiteMapNode Methode implementieren.
Die bereitgestellte URL kann eine virtuelle oder absolute URL sein. Es kann auch eine URL sein, die anwendungsrelative Syntax verwendet, z ~/apprelativedirectory. B. . Stellen Sie sicher, dass die Implementierung der FindSiteMapNode Methodenanalyse und die anwendungsrelative Syntax ordnungsgemäß behandelt werden.
Die XmlSiteMapProvider-Klasse, bei der es sich um den Standardmäßigen Websitezuordnungsanbieter für ASP.NET handelt, verwendet die URL eines SiteMapNode-Objekts als Schlüssel in den verschiedenen Auflistungen, die von den Klassen verwaltet werden. Wenn eine SiteMapNode URL bereitgestellt wird, muss sie daher innerhalb des Bereichs des Websiteübersichtsanbieters eindeutig sein. Wenn keine URL angegeben wird, wird ein eindeutiger Bezeichner generiert, um die SiteMapNode.
Hinweise für Ausführende
Achten Sie beim Überschreiben der FindSiteMapNode(String) Methode in einer abgeleiteten Klasse darauf, die Suche auf alle untergeordneten Anbieter zu erweitern, wenn ein SiteMapNode Objekt, das der URL entspricht, vom Anbieter in der aktuellen Websitezuordnung nicht gefunden wird und der Anbieter untergeordnete Anbieter unterstützt.
Weitere Informationen
Gilt für:
FindSiteMapNode(HttpContext)
Ruft ein SiteMapNode Objekt ab, das die aktuell angeforderte Seite mithilfe des angegebenen HttpContext Objekts darstellt.
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
Parameter
- context
- HttpContext
Wird HttpContext verwendet, um Knoteninformationen mit der URL der angeforderten Seite abzugleichen.
Gibt zurück
A SiteMapNode that represents the currently requested page; otherwise, if nullno corresponding SiteMapNode can be found in the SiteMapNode or if the page context is null.
Hinweise
Die FindSiteMapNode Methode ruft die abstrakte FindSiteMapNode Methode auf, um ein SiteMapNode Objekt für die aktuell angeforderte Seite basierend auf der rohen URL oder dem virtuellen Pfad der Anforderung abzurufen. Wenn kein entsprechender Wert im SiteMapNodeZugehörigen SiteMap gefunden wird, null wird dieser zurückgegeben.
Die FindSiteMapNode Methode überprüft nicht, ob SiteMapNode standardmäßig auf einen Benutzer zugegriffen werden kann.