SiteMapProvider.FindSiteMapNode Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
En cas de substitution dans une classe dérivée, récupère un SiteMapNode objet qui représente une page.
Surcharges
| Nom | Description |
|---|---|
| FindSiteMapNode(String) |
En cas de substitution dans une classe dérivée, récupère un SiteMapNode objet qui représente la page à l’URL spécifiée. |
| FindSiteMapNode(HttpContext) |
Récupère un SiteMapNode objet qui représente la page actuellement demandée à l’aide de l’objet spécifié HttpContext . |
FindSiteMapNode(String)
En cas de substitution dans une classe dérivée, récupère un SiteMapNode objet qui représente la page à 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 pour laquelle récupérer un SiteMapNode.
Retours
Qui SiteMapNode représente la page identifiée par rawURL; sinon, nullsi aucun paramètre correspondant SiteMapNode n’est trouvé ou si le découpage de sécurité est activé et que l’utilisateur SiteMapNode actuel ne peut pas le retourner.
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 qui dérivent 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 la syntaxe relative à l’application, telle que ~/apprelativedirectory. Vérifiez que toute implémentation de la méthode analyse et gère correctement la syntaxe relative à l’application FindSiteMapNode .
La classe XmlSiteMapProvider, qui est le fournisseur de cartes de site par défaut pour ASP.NET, utilise l’URL d’un objet SiteMapNode 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 correspondant à l’URL est introuvable par le fournisseur dans la carte de site actuelle et que le fournisseur prend en charge les fournisseurs enfants.
Voir aussi
S’applique à
FindSiteMapNode(HttpContext)
Récupère un SiteMapNode objet qui représente la page actuellement demandée à l’aide de l’objet spécifié HttpContext .
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 les informations de nœud avec l’URL de la page demandée.
Retours
Qui SiteMapNode représente la page actuellement demandée ; sinon, nullsi aucun correspondant SiteMapNode n’est trouvé dans le SiteMapNode contexte de la page ou si le contexte de la page est 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 d’accès 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.