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.
Ruft beim Überschreiben in einer abgeleiteten Klasse ein SiteMapNode-Objekt ab, das eine Seite darstellt.
Überlädt
FindSiteMapNode(String) |
Ruft beim Überschreiben in einer abgeleiteten Klasse ein SiteMapNode-Objekt ab, das die Seite bei der angegebenen URL darstellt. |
FindSiteMapNode(HttpContext) |
Ruft ein SiteMapNode-Objekt ab, das die gerade angeforderte Seite mithilfe des angegebenen HttpContext-Objekts darstellt. |
FindSiteMapNode(String)
Ruft beim Überschreiben in einer abgeleiteten Klasse ein SiteMapNode-Objekt ab, das die Seite bei 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 angibt, für die ein SiteMapNode abgerufen werden soll.
Gibt zurück
Ein SiteMapNode, der die von rawURL
angegebene Seite darstellt. Andernfalls null
, wenn kein entsprechender SiteMapNode gefunden wird oder wenn Einschränkungen aus Sicherheitsgründen aktiviert sind und der SiteMapNode für den aktuellen Benutzer nicht zurückgegeben werden kann.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie die Methode in einer Klasse implementiert wird, die die FindSiteMapNode abstrakte SiteMapProvider Klasse implementiert. Die SimpleTextSiteMapProvider
Verwendung einer 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 anwendungsbezogene Syntax verwendet, z ~/apprelativedirectory
. B. . Stellen Sie sicher, dass jede Implementierung der FindSiteMapNode Methode analysiert und anwendungsrelative Syntax ordnungsgemäß behandelt wird.
Die XmlSiteMapProvider Klasse, die der Standardwebsitezuordnungsanbieter für ASP.NET ist, verwendet die URL eines SiteMapNode Objekts als Schlüssel in den verschiedenen Sammlungen, die die Klassen verwalten. Wenn eine SiteMapNode URL bereitgestellt wird, muss sie daher innerhalb des Bereichs des Websitezuordnungsanbieters eindeutig sein. Wenn keine URL bereitgestellt wird, wird ein eindeutiger Bezeichner generiert, um die SiteMapNode.
Hinweise für Ausführende
Wenn Die Methode in einer abgeleiteten Klasse außer FindSiteMapNode(String) Kraft gesetzt wird, sollten Sie die Suche auf untergeordnete Anbieter erweitern, wenn ein SiteMapNode Objekt, das der URL entspricht, nicht vom Anbieter in der aktuellen Websitezuordnung gefunden wird und der Anbieter untergeordnete Anbieter unterstützt.
Siehe auch
Gilt für
FindSiteMapNode(HttpContext)
Ruft ein SiteMapNode-Objekt ab, das die gerade 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
Der HttpContext, der verwendet wird, um Knoteninformationen mit der URL der angeforderten Seite abzugleichen.
Gibt zurück
Ein SiteMapNode, der die gerade angeforderte Seite darstellt. Andernfalls null
, wenn kein entsprechender SiteMapNode im SiteMapNode gefunden werden kann oder wenn der Seitenkontext null
ist.
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 entsprechendes SiteMapNode in der SiteMapzurückgegebenen Datei gefunden wird, null
wird dies zurückgegeben.
Die FindSiteMapNode Methode überprüft nicht, ob ein SiteMapNode Benutzer standardmäßig auf einen Benutzer zugreifen kann.