SiteMapProvider.Initialize(String, NameValueCollection) Méthode

Définition

Initialise l'implémentation de SiteMapProvider, y compris toutes les ressources nécessaires pour charger des données de plan de site à partir d'un stockage persistant.

public:
 override void Initialize(System::String ^ name, System::Collections::Specialized::NameValueCollection ^ attributes);
public override void Initialize (string name, System.Collections.Specialized.NameValueCollection attributes);
override this.Initialize : string * System.Collections.Specialized.NameValueCollection -> unit
Public Overrides Sub Initialize (name As String, attributes As NameValueCollection)

Paramètres

name
String

Name du fournisseur à initialiser.

attributes
NameValueCollection

NameValueCollection qui peut contenir des attributs supplémentaires contribuant à initialiser le fournisseur. Ces attributs sont lus à partir de la configuration du fournisseur de plan de site dans le fichier Web.config.

Exemples

L’exemple de code suivant montre comment remplacer la Initialize méthode pour préparer une connexion de base de données Microsoft Access.

La chaîne de connexion de l’objet OleDbConnection est passée dans le NameValueCollection paramètre de la Initialize méthode. Dans ce cas, la chaîne de connexion est fournie par la section spécifique au fournisseur dans le fichier Web.config. Ici, accessSiteMapConnectionString contient une chaîne de connexion à une base de données Microsoft Access qui héberge les données de carte de site.

<siteMap defaultProvider="AccessSiteMapProvider">  
  <providers>  
     <add  
       name="AccessSiteMapProvider"  
       type="Samples.AspNet.AccessSiteMapProvider,Samples.AspNet"  
       accessSiteMapConnectionString="PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=\\SomeUNCShare\\sitemap.mdb"/>  
  </providers>   
 </siteMap>  

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

   // Initialize is used to initialize the properties and any state that the
   // AccessProvider holds, but is not used to build the site map.
   // The site map is built when the BuildSiteMap method is called.
   virtual void Initialize( String^ name, NameValueCollection^ attributes ) override
   {
      if ( IsInitialized )
            return;

      StaticSiteMapProvider::Initialize( name, attributes );
      
      // Create and test the connection to the Microsoft Access database.
      // Retrieve the Value of the Access connection string from the
      // attributes NameValueCollection.
      String^ connectionString = attributes[ AccessConnectionStringName ];
      if ( nullptr == connectionString || connectionString->Length == 0 )
            throw gcnew Exception( "The connection string was not found." );
      else
            accessConnection = gcnew OleDbConnection( connectionString );

      initialized = true;
   }


protected:
// Initialize is used to initialize the properties and any state that the
// AccessProvider holds, but is not used to build the site map.
// The site map is built when the BuildSiteMap method is called.
public override void Initialize(string name, NameValueCollection attributes) {
    if (IsInitialized)
        return;

    base.Initialize(name, attributes);

    // Create and test the connection to the Microsoft Access database.

    // Retrieve the Value of the Access connection string from the
    // attributes NameValueCollection.
    string connectionString = attributes[AccessConnectionStringName];

    if (null == connectionString || connectionString.Length == 0)
        throw new Exception ("The connection string was not found.");
    else
        accessConnection = new OleDbConnection(connectionString);

    initialized = true;
}
' Initialize is used to initialize the properties and any state that the
' AccessProvider holds, but is not used to build the site map.
' The site map is built when the BuildSiteMap method is called.
Public Overrides Sub Initialize(ByVal name As String, ByVal attributes As NameValueCollection)
    If IsInitialized Then
        Return
    End If
    MyBase.Initialize(name, attributes)

    ' Create and test the connection to the Microsoft Access database.
    ' Retrieve the Value of the Access connection string from the
    ' attributes NameValueCollection.
    Dim connectionString As String = attributes(AccessConnectionStringName)

    If Nothing = connectionString OrElse connectionString.Length = 0 Then
        Throw New Exception("The connection string was not found.")
    Else
        accessConnection = New OleDbConnection(connectionString)
    End If
    initialized = True
End Sub

Remarques

La Initialize méthode ne crée pas réellement une carte de site, elle prépare uniquement l’état de l’objet SiteMapProvider à effectuer. L’implémentation par défaut initialise la SecurityTrimmingEnabled propriété du fournisseur de carte de site à partir de la configuration de navigation du site.

Les classes qui dérivent de la SiteMapProvider méthode peuvent remplacer la Initialize méthode pour initialiser n’importe quel état et ressources requis pour charger les données de carte de site à partir du stockage persistant. Par exemple, si votre classe dérivée utilise des fichiers pour stocker des données de carte de site, toute initialisation de fichier peut être effectuée dans la Initialize méthode. Si la classe dérivée utilise un autre type de magasin de données, tel qu’une base de données relationnelle, l’initialisation d’une connexion de base de données peut être effectuée.

Des attributs supplémentaires, tels que des noms de fichiers ou des chaînes de connexion, sont lus par le système de configuration ASP.NET et transmis à la Initialize méthode avec son NameValueCollection paramètre.

Notes pour les héritiers

Lors de la substitution de la Initialize(String, NameValueCollection) méthode dans une classe dérivée, veillez à appeler d’abord la Initialize(String, NameValueCollection) méthode pour la classe de base avant d’effectuer vos propres initialisations.

S’applique à

Voir aussi