SiteMapProvider.FindSiteMapNode Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
När det åsidosätts i en härledd klass hämtar ett SiteMapNode objekt som representerar en sida.
Överlagringar
| Name | Description |
|---|---|
| FindSiteMapNode(String) |
När det åsidosätts i en härledd klass hämtar ett SiteMapNode objekt som representerar sidan på den angivna URL:en. |
| FindSiteMapNode(HttpContext) |
Hämtar ett SiteMapNode objekt som representerar den begärda sidan med det angivna HttpContext objektet. |
FindSiteMapNode(String)
När det åsidosätts i en härledd klass hämtar ett SiteMapNode objekt som representerar sidan på den angivna URL:en.
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
Parametrar
- rawUrl
- String
En URL som identifierar sidan som du vill hämta en SiteMapNode.
Returer
En SiteMapNode som representerar sidan som identifieras av rawURL, annars , nullom ingen motsvarande SiteMapNode hittas eller om säkerhetstrimning är aktiverad och SiteMapNode inte kan returneras för den aktuella användaren.
Exempel
Följande kodexempel visar hur du implementerar FindSiteMapNode metoden i en klass som implementerar den abstrakta SiteMapProvider klassen.
SimpleTextSiteMapProvider Använder en hjälpmetod med namnet FindUrl, för att hämta URL:en för den sida som visas från HttpContext objektet.
Det här kodexemplet är en del av ett större exempel för SiteMapProvider klassen.
// 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
Kommentarer
Klasser som härleds från SiteMapProvider klassen måste implementera den abstrakta FindSiteMapNode metoden.
Den angivna URL:en kan vara en virtuell eller absolut URL. Det kan också vara en URL som använder programrelativ syntax, till exempel ~/apprelativedirectory. Se till att alla implementeringar av FindSiteMapNode metoden parsar och hanterar programrelativ syntax korrekt.
Klassen XmlSiteMapProvider, som är standardprovidern för ASP.NET, använder URL:en för ett SiteMapNode-objekt som en nyckel i de olika samlingar som klasserna underhåller. Om en innehåller en SiteMapNode URL måste den därför vara unik inom webbplatsöversiktsproviderns omfång. Om ingen URL anges genereras en unik identifierare för att identifiera SiteMapNode.
Anteckningar till implementerare
När du åsidosätter FindSiteMapNode(String) metoden i en härledd klass bör du utöka sökningen till alla underordnade leverantörer, om ett SiteMapNode objekt som matchar URL:en inte hittas av providern på den aktuella webbplatskartan och providern stöder underordnade leverantörer.
Se även
Gäller för
FindSiteMapNode(HttpContext)
Hämtar ett SiteMapNode objekt som representerar den begärda sidan med det angivna HttpContext objektet.
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
Parametrar
- context
- HttpContext
Används HttpContext för att matcha nodinformation med URL:en för den begärda sidan.
Returer
En SiteMapNode som representerar den aktuella begärda sidan, annars , nullom ingen motsvarande SiteMapNode kan hittas i SiteMapNode eller om sidkontexten är null.
Kommentarer
Metoden FindSiteMapNode anropar den abstrakta FindSiteMapNode metoden för att hämta ett SiteMapNode objekt för den aktuella begärda sidan baserat på den råa URL:en eller den virtuella sökvägen för begäran. Om ingen motsvarande SiteMapNode hittas i SiteMapnull returneras .
Metoden FindSiteMapNode kontrollerar inte om en SiteMapNode är tillgänglig för en användare som standard.