SiteMapProvider.FindSiteMapNode SiteMapProvider.FindSiteMapNode SiteMapProvider.FindSiteMapNode SiteMapProvider.FindSiteMapNode Method

Definition

Ruft beim Überschreiben in einer abgeleiteten Klasse ein SiteMapNode-Objekt ab, das eine Seite darstellt.When overridden in a derived class, retrieves a SiteMapNode object that represents a page.

Überlädt

FindSiteMapNode(String) FindSiteMapNode(String) FindSiteMapNode(String) FindSiteMapNode(String)

Ruft beim Überschreiben in einer abgeleiteten Klasse ein SiteMapNode-Objekt ab, das die Seite bei der angegebenen URL darstellt.When overridden in a derived class, retrieves a SiteMapNode object that represents the page at the specified URL.

FindSiteMapNode(HttpContext) FindSiteMapNode(HttpContext) FindSiteMapNode(HttpContext) FindSiteMapNode(HttpContext)

Ruft ein SiteMapNode-Objekt ab, das die gerade angeforderte Seite mithilfe des angegebenen HttpContext-Objekts darstellt.Retrieves a SiteMapNode object that represents the currently requested page using the specified HttpContext object.

FindSiteMapNode(String) FindSiteMapNode(String) FindSiteMapNode(String) FindSiteMapNode(String)

Ruft beim Überschreiben in einer abgeleiteten Klasse ein SiteMapNode-Objekt ab, das die Seite bei der angegebenen URL darstellt.When overridden in a derived class, retrieves a SiteMapNode object that represents the page at the specified 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

Parameter

rawUrl
String String String String

Eine URL, die die Seite angibt, für die ein SiteMapNode abgerufen werden soll.A URL that identifies the page for which to retrieve a SiteMapNode.

Gibt zurück

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.A SiteMapNode that represents the page identified by rawURL; otherwise, null, if no corresponding 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, SiteMapProvider die die abstrakte-Klasse implementiert.The following code example demonstrates how to implement the FindSiteMapNode method in a class that implements the abstract SiteMapProvider class. Die SimpleTextSiteMapProvider verwendet eine Hilfsmethode mit dem FindUrlNamen, um die URL der aktuell angezeigten Seite aus dem HttpContext -Objekt zu erhalten.The SimpleTextSiteMapProvider uses a helper method, named FindUrl, to get the URL of the currently displayed page from the HttpContext object.

Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die SiteMapProvider -Klasse bereitgestellt wird.This code example is part of a larger example provided for the SiteMapProvider class.

// 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, FindSiteMapNode müssen die abstrakte-Methode implementieren.Classes that derive from the SiteMapProvider class must implement the abstract FindSiteMapNode method.

Die angegebene URL kann ein virtueller oder absolute URL sein.The URL provided can be a virtual or absolute URL. Es kann sich auch um eine URL handeln, die Anwendungs relative Syntax verwendet, ~/apprelativedirectoryz. b.It might also be a URL that uses application-relative syntax, such as ~/apprelativedirectory. Stellen Sie sicher, dass jede FindSiteMapNode Implementierung der-Methode die Anwendungs relative Syntax ordnungsgemäß analysiert und behandelt.Ensure that any implementation of the FindSiteMapNode method parse and handle application-relative syntax properly.

Die XmlSiteMapProvider -Klasse, bei der es sich um den Standard-Site Übersichts Anbieter für ASP.net handelt SiteMapNode , verwendet die URL eines-Objekts als Schlüssel in den verschiedenen Auflistungen, die von den Klassen verwaltet werden.The XmlSiteMapProvider class, which is the default site map provider for ASP.NET, uses the URL of a SiteMapNode object as a key in the various collections that the classes maintain. Wenn eine SiteMapNode eine URL bereitstellt, muss Sie daher innerhalb des Bereichs des Site Übersichts Anbieters eindeutig sein.Therefore, if a SiteMapNode provides a URL, it must be unique within the scope of the site map provider. Wenn keine URL angegeben wird, wird ein eindeutiger Bezeichner generiert, SiteMapNodeum die zu identifizieren.If no URL is provided, a unique identifier is generated to identify the SiteMapNode.

Hinweise für Vererber

Wenn Sie die FindSiteMapNode(String) Methode in einer abgeleiteten Klasse überschreiben, stellen Sie sicher, dass Sie die Suche auf alle SiteMapNode untergeordneten Anbieter ausweiten, wenn ein-Objekt, das mit der URL übereinstimmt, vom Anbieter in der aktuellen Site Übersicht nicht gefunden wird und der Anbieter untergeordnete Anbieter unterstützt.When overriding the FindSiteMapNode(String) method in a derived class, be sure to extend the search to any child providers, if a SiteMapNode object that matches the URL is not found by the provider in the current site map and the provider supports child providers.

Siehe auch

FindSiteMapNode(HttpContext) FindSiteMapNode(HttpContext) FindSiteMapNode(HttpContext) FindSiteMapNode(HttpContext)

Ruft ein SiteMapNode-Objekt ab, das die gerade angeforderte Seite mithilfe des angegebenen HttpContext-Objekts darstellt.Retrieves a SiteMapNode object that represents the currently requested page using the specified HttpContext object.

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 HttpContext HttpContext HttpContext

Der HttpContext, der verwendet wird, um Knoteninformationen mit der URL der angeforderten Seite abzugleichen.The HttpContext used to match node information with the URL of the requested page.

Gibt zurück

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.A SiteMapNode that represents the currently requested page; otherwise, null, if no corresponding SiteMapNode can be found in the SiteMapNode or if the page context is null.

Hinweise

Die FindSiteMapNode -Methode ruft die FindSiteMapNode abstrakte-Methode auf SiteMapNode , um ein-Objekt für die aktuell angeforderte Seite basierend auf der unformatierten URL oder dem virtuellen Pfad der Anforderung abzurufen.The FindSiteMapNode method calls the abstract FindSiteMapNode method to retrieve a SiteMapNode object for the currently requested page based on the raw URL or the virtual path of the request. Wenn keine entsprechende SiteMapNode in der SiteMapgefunden wird, null wird zurückgegeben.If no corresponding SiteMapNode is found in the SiteMap, null is returned.

Die FindSiteMapNode -Methode überprüft nicht, ob SiteMapNode ein Benutzer standardmäßig auf einen zugreifen kann.The FindSiteMapNode method does not check whether a SiteMapNode is accessible to a user, by default.

Siehe auch

Gilt für: