SiteMapProvider.FindSiteMapNode Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Po zastąpieniu w klasie pochodnej pobiera SiteMapNode obiekt reprezentujący stronę.
Przeciążenia
FindSiteMapNode(String) |
Po zastąpieniu w klasie pochodnej pobiera SiteMapNode obiekt reprezentujący stronę pod określonym adresem URL. |
FindSiteMapNode(HttpContext) |
SiteMapNode Pobiera obiekt reprezentujący aktualnie żądaną stronę przy użyciu określonego HttpContext obiektu. |
FindSiteMapNode(String)
Po zastąpieniu w klasie pochodnej pobiera SiteMapNode obiekt reprezentujący stronę pod określonym adresem 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
Adres URL identyfikujący stronę, dla której ma być pobierany SiteMapNodeelement .
Zwraca
Element SiteMapNode reprezentujący stronę zidentyfikowaną przez rawURL
element ; w przeciwnym razie , null
jeśli nie zostanie znaleziony odpowiedni SiteMapNode lub jeśli nie włączono przycinania zabezpieczeń i SiteMapNode nie można go zwrócić dla bieżącego użytkownika.
Przykłady
Poniższy przykład kodu pokazuje, jak zaimplementować metodę FindSiteMapNode w klasie, która implementuje klasę abstrakcyjną SiteMapProvider . Metoda SimpleTextSiteMapProvider
pomocnika używa metody o nazwie FindUrl
, aby uzyskać adres URL aktualnie wyświetlanej HttpContext strony z obiektu.
Ten przykład kodu jest częścią większego przykładu podanego SiteMapProvider dla klasy.
// 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
Uwagi
Klasy pochodzące z SiteMapProvider klasy muszą implementować metodę abstrakcyjną FindSiteMapNode .
Podany adres URL może być adresem URL wirtualnym lub bezwzględnym. Może to być również adres URL, który używa składni względnej aplikacji, na przykład ~/apprelativedirectory
. Upewnij się, że każda implementacja metody analizuje składnię FindSiteMapNode względną aplikacji i obsługuje prawidłową składnię względną aplikacji.
XmlSiteMapProvider Klasa, która jest domyślnym dostawcą mapy witryny dla ASP.NET, używa adresu URL SiteMapNode obiektu jako klucza w różnych kolekcjach, które klasy utrzymują. W związku z tym jeśli adres SiteMapNode URL zawiera adres URL, musi być unikatowy w zakresie dostawcy mapy witryny. Jeśli nie podano żadnego adresu URL, zostanie wygenerowany unikatowy identyfikator w celu zidentyfikowania elementu SiteMapNode.
Uwagi dotyczące implementowania
Podczas zastępowania FindSiteMapNode(String) metody w klasie pochodnej należy rozszerzyć wyszukiwanie na wszystkich dostawców podrzędnych, jeśli SiteMapNode obiekt zgodny z adresem URL nie zostanie znaleziony przez dostawcę w bieżącej mapie witryny, a dostawca obsługuje dostawców podrzędnych.
Zobacz też
Dotyczy
FindSiteMapNode(HttpContext)
SiteMapNode Pobiera obiekt reprezentujący aktualnie żądaną stronę przy użyciu określonego HttpContext obiektu.
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
Element HttpContext używany do dopasowania informacji o węźle z adresem URL żądanej strony.
Zwraca
Element SiteMapNode reprezentujący aktualnie żądaną stronę; w przeciwnym razie , null
jeśli nie można odnaleźć odpowiedniego SiteMapNode elementu w elemecie SiteMapNode lub jeśli kontekst strony to null
.
Uwagi
Metoda FindSiteMapNode wywołuje metodę abstrakcyjną FindSiteMapNode SiteMapNode , aby pobrać obiekt dla aktualnie żądanej strony na podstawie nieprzetworzonego adresu URL lub ścieżki wirtualnej żądania. Jeśli w elemecie nie znaleziono odpowiedniego SiteMapNode SiteMapelementu , null
zostanie zwrócona wartość .
Metoda FindSiteMapNode nie sprawdza, czy SiteMapNode element jest domyślnie dostępny dla użytkownika.