SiteMapProvider.FindSiteMapNode Methode

Definitie

Wanneer deze wordt overschreven in een afgeleide klasse, haalt u een SiteMapNode object op dat een pagina vertegenwoordigt.

Overloads

Name Description
FindSiteMapNode(String)

Wanneer deze wordt overschreven in een afgeleide klasse, haalt u een SiteMapNode object op dat de pagina aangeeft op de opgegeven URL.

FindSiteMapNode(HttpContext)

Hiermee wordt een SiteMapNode object opgehaald dat de momenteel aangevraagde pagina vertegenwoordigt met behulp van het opgegeven HttpContext object.

FindSiteMapNode(String)

Wanneer deze wordt overschreven in een afgeleide klasse, haalt u een SiteMapNode object op dat de pagina aangeeft op de opgegeven 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

Parameters

rawUrl
String

Een URL die de pagina identificeert waarvoor een SiteMapNode.

Retouren

Een SiteMapNode die de pagina vertegenwoordigt die wordt geïdentificeerd door rawURL; anders, nullals er geen overeenkomende SiteMapNode is gevonden of als beveiligingsbeperkingen zijn ingeschakeld en de SiteMapNode pagina niet kan worden geretourneerd voor de huidige gebruiker.

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u de FindSiteMapNode methode implementeert in een klasse die de abstracte SiteMapProvider klasse implementeert. Hierbij SimpleTextSiteMapProvider wordt een helpermethode met de naam FindUrlgebruikt om de URL op te halen van de momenteel weergegeven pagina van het HttpContext object.

Dit codevoorbeeld maakt deel uit van een groter voorbeeld voor de SiteMapProvider klasse.

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

Opmerkingen

Klassen die zijn afgeleid van de SiteMapProvider klasse, moeten de abstracte FindSiteMapNode methode implementeren.

De opgegeven URL kan een virtuele of absolute URL zijn. Het kan ook een URL zijn die gebruikmaakt van toepassings-relatieve syntaxis, zoals ~/apprelativedirectory. Zorg ervoor dat elke implementatie van de methode de FindSiteMapNode toepassings-relatieve syntaxis parseert en verwerkt.

De klasse XmlSiteMapProvider, de standaardsiteoverzichtprovider voor ASP.NET, gebruikt de URL van een SiteMapNode-object als sleutel in de verschillende verzamelingen die de klassen onderhouden. Als een SiteMapNode URL een URL levert, moet deze daarom uniek zijn binnen het bereik van de siteoverzichtprovider. Als er geen URL wordt opgegeven, wordt er een unieke id gegenereerd om de SiteMapNode.

Notities voor uitvoerders

Wanneer u de FindSiteMapNode(String) methode in een afgeleide klasse overschrijft, moet u de zoekopdracht uitbreiden naar onderliggende providers als een SiteMapNode object dat overeenkomt met de URL niet wordt gevonden door de provider in het huidige siteoverzicht en de provider ondersteuning biedt voor onderliggende providers.

Zie ook

Van toepassing op

FindSiteMapNode(HttpContext)

Hiermee wordt een SiteMapNode object opgehaald dat de momenteel aangevraagde pagina vertegenwoordigt met behulp van het opgegeven 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

Parameters

context
HttpContext

De HttpContext knooppuntgegevens worden vergeleken met de URL van de aangevraagde pagina.

Retouren

Een SiteMapNode die de momenteel aangevraagde pagina vertegenwoordigt; anders, nullals er geen overeenkomende SiteMapNode pagina kan worden gevonden in of SiteMapNode als de paginacontext is null.

Opmerkingen

Met FindSiteMapNode de methode wordt de abstracte FindSiteMapNode methode aangeroepen om een SiteMapNode object op te halen voor de momenteel aangevraagde pagina op basis van de onbewerkte URL of het virtuele pad van de aanvraag. Als er geen overeenkomende waarde SiteMapNode wordt gevonden in de SiteMap, null wordt deze geretourneerd.

De FindSiteMapNode methode controleert niet of een SiteMapNode gebruiker standaard toegankelijk is.

Zie ook

Van toepassing op