SiteMapProvider.FindSiteMapNode Méthode

Définition

En cas de substitution dans une classe dérivée, récupère un objet SiteMapNode qui représente une page.

Surcharges

FindSiteMapNode(String)

En cas de substitution dans une classe dérivée, il récupère un objet SiteMapNode qui représente la page présente à l'URL spécifiée.

FindSiteMapNode(HttpContext)

Récupère un objet SiteMapNode qui représente la page actuellement demandée à l'aide de l'objet HttpContext spécifié.

FindSiteMapNode(String)

En cas de substitution dans une classe dérivée, il récupère un objet SiteMapNode qui représente la page présente à l'URL spécifiée.

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

Paramètres

rawUrl
String

URL qui identifie la page à laquelle récupérer un SiteMapNode.

Retours

SiteMapNode

SiteMapNode qui représente la page identifiée par rawURL ; sinon, null, si aucun SiteMapNode correspondant n'est présent, ou si l'ajustement de la sécurité est activé et si le SiteMapNode ne peut pas être retourné pour l'utilisateur actuel.

Exemples

L’exemple de code suivant montre comment implémenter la FindSiteMapNode méthode dans une classe qui implémente la classe abstraite SiteMapProvider . Il SimpleTextSiteMapProvider utilise une méthode d’assistance, nommée FindUrl, pour obtenir l’URL de la page actuellement affichée à partir de l’objet HttpContext .

Cet exemple de code fait partie d’un exemple plus grand fourni pour la SiteMapProvider classe.

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

Remarques

Les classes dérivées de la SiteMapProvider classe doivent implémenter la méthode abstraite FindSiteMapNode .

L’URL fournie peut être une URL virtuelle ou absolue. Il peut également s’agir d’une URL qui utilise une syntaxe relative à l’application, telle que ~/apprelativedirectory. Vérifiez que toute implémentation de l’analyse de méthode et gère correctement la syntaxe relative à l’application FindSiteMapNode .

La XmlSiteMapProvider classe, qui est le fournisseur de mappage de site par défaut pour ASP.NET, utilise l’URL d’un SiteMapNode objet comme clé dans les différentes collections que les classes gèrent. Par conséquent, si une SiteMapNode URL fournit une URL, elle doit être unique dans l’étendue du fournisseur de carte de site. Si aucune URL n’est fournie, un identificateur unique est généré pour identifier le SiteMapNode.

Notes pour les responsables de l’implémentation

En cas de substitution de la FindSiteMapNode(String) méthode dans une classe dérivée, veillez à étendre la recherche à tous les fournisseurs enfants, si un SiteMapNode objet qui correspond à l’URL n’est pas trouvé par le fournisseur dans la carte de site actuelle et que le fournisseur prend en charge les fournisseurs d’enfants.

Voir aussi

S’applique à

FindSiteMapNode(HttpContext)

Récupère un objet SiteMapNode qui représente la page actuellement demandée à l'aide de l'objet HttpContext spécifié.

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

Paramètres

context
HttpContext

HttpContext utilisé pour faire correspondre des informations de nœud à l'URL de la page demandée.

Retours

SiteMapNode

SiteMapNode qui représente la page actuellement demandée ; sinon, null, si aucun SiteMapNode correspondant n'est présent dans le SiteMapNode ou si le contexte de page a la valeur null.

Remarques

La FindSiteMapNode méthode appelle la méthode abstraite FindSiteMapNode pour récupérer un SiteMapNode objet pour la page actuellement demandée en fonction de l’URL brute ou du chemin virtuel de la requête. Si aucun correspondant SiteMapNode n’est trouvé dans le SiteMap, null est retourné.

La FindSiteMapNode méthode ne vérifie pas si un SiteMapNode utilisateur est accessible par défaut.

Voir aussi

S’applique à