SiteMapProvider.FindSiteMapNode Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Při přepsání v odvozené třídě načte SiteMapNode objekt, který představuje stránku.
Přetížení
FindSiteMapNode(String) |
Při přepsání v odvozené třídě načte SiteMapNode objekt, který představuje stránku na zadané adrese URL. |
FindSiteMapNode(HttpContext) |
Načte SiteMapNode objekt, který představuje aktuálně požadovanou stránku pomocí zadaného HttpContext objektu. |
FindSiteMapNode(String)
Při přepsání v odvozené třídě načte SiteMapNode objekt, který představuje stránku na zadané adrese 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
Parametry
- rawUrl
- String
Adresa URL, která identifikuje stránku, pro kterou se má načíst SiteMapNode.
Návraty
A SiteMapNode , který představuje stránku označenou rawURL
; jinak , null
pokud není nalezena žádná odpovídající SiteMapNode nebo pokud je povolené oříznutí zabezpečení a SiteMapNode nelze ho vrátit pro aktuálního uživatele.
Příklady
Následující příklad kódu ukazuje, jak implementovat metodu FindSiteMapNode ve třídě, která implementuje abstraktní SiteMapProvider třídu. Pomocí SimpleTextSiteMapProvider
pomocné metody pojmenované FindUrl
, získat adresu URL aktuálně zobrazené stránky z objektu HttpContext .
Tento příklad kódu je součástí většího příkladu zadaného SiteMapProvider pro třídu.
// 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
Poznámky
Třídy odvozené z SiteMapProvider třídy musí implementovat abstraktní FindSiteMapNode metodu.
Zadaná adresa URL může být virtuální nebo absolutní adresa URL. Může se jednat také o adresu URL, která používá syntaxi relativní aplikace, například ~/apprelativedirectory
. Ujistěte se, že jakákoli implementace FindSiteMapNode metody analyzuje a zpracovává syntaxi relativní vzhledem k aplikaci správně.
TřídaXmlSiteMapProvider, která je výchozím poskytovatelem map webů pro ASP.NET, používá adresu URL SiteMapNode objektu jako klíč v různých kolekcích, které třídy udržují. Proto pokud SiteMapNode poskytuje adresu URL, musí být jedinečná v rámci oboru poskytovatele mapy webu. Pokud není k dispozici žádná adresa URL, vygeneruje se jedinečný identifikátor pro identifikaci SiteMapNode.
Poznámky pro implementátory
Při přepsání FindSiteMapNode(String) metody v odvozené třídě nezapomeňte rozšířit vyhledávání na všechny podřízené zprostředkovatele, pokud SiteMapNode objekt, který odpovídá adrese URL, nebyl nalezen poskytovatelem v aktuální mapě webu a poskytovatel podporuje podřízené poskytovatele.
Viz také
Platí pro
FindSiteMapNode(HttpContext)
Načte SiteMapNode objekt, který představuje aktuálně požadovanou stránku pomocí zadaného HttpContext objektu.
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
Parametry
- context
- HttpContext
Slouží HttpContext k porovnávání informací o uzlu s adresou URL požadované stránky.
Návraty
ASiteMapNode, který představuje aktuálně požadovanou stránku; v opačném případě , null
pokud není v kontextu stránky null
nalezena SiteMapNode žádná odpovídající SiteMapNode .
Poznámky
FindSiteMapNode Metoda volá abstraktní FindSiteMapNode metodu k načtení SiteMapNode objektu pro aktuálně požadovanou stránku na základě nezpracované adresy URL nebo virtuální cesty požadavku. Pokud se v souboru SiteMapnenajde žádná odpovídající hodnotaSiteMapNode, null
vrátí se.
Metoda FindSiteMapNode nekontroluje, jestli SiteMapNode je uživatel ve výchozím nastavení přístupný.