SiteMapProvider.FindSiteMapNode Methode

Definition

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.

Weitere Informationen

Gilt für: