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