Freigeben über


SiteMapProvider.FindSiteMapNode Methode

Definition

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

SiteMapNode

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 , FindUrlum 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

SiteMapNode

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.

Siehe auch

Gilt für