SiteMapProvider.Initialize(String, NameValueCollection) Metoda

Definicja

Inicjuje implementację SiteMapProvider , w tym wszelkie zasoby potrzebne do załadowania danych mapy lokacji z magazynu trwałego.

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)

Parametry

name
String

Dostawca Name do zainicjowania.

attributes
NameValueCollection

Element NameValueCollection , który może zawierać dodatkowe atrybuty ułatwiające zainicjowanie dostawcy. Te atrybuty są odczytywane z konfiguracji dostawcy mapy lokacji w pliku Web.config.

Przykłady

W poniższym przykładzie kodu pokazano, jak zastąpić Initialize metodę w celu przygotowania połączenia bazy danych programu Microsoft Access.

Parametry połączenia dla OleDbConnection obiektu są przekazywane w NameValueCollection parametrze Initialize metody . W takim przypadku parametry połączenia są udostępniane przez sekcję specyficzną dla dostawcy w pliku Web.config. accessSiteMapConnectionString W tym miejscu zawiera parametry połączenia z bazą danych programu Microsoft Access, która hostuje dane mapy witryny.

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

Ten przykład kodu jest częścią większego przykładu podanego SiteMapProvider dla klasy.

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

Uwagi

Metoda Initialize nie tworzy mapy lokacji, przygotowuje tylko stan SiteMapProvider obiektu do wykonania. Domyślna implementacja inicjuje SecurityTrimmingEnabled właściwość dostawcy mapy lokacji z konfiguracji nawigacji lokacji.

Klasy, które pochodzą z SiteMapProvider metody , mogą zastąpić metodę Initialize , aby zainicjować dowolny stan i zasoby wymagane do załadowania danych mapy lokacji z magazynu trwałego. Jeśli na przykład klasa pochodna używa plików do przechowywania danych mapy witryny, w metodzie można wykonać dowolną inicjację Initialize pliku. Jeśli klasa pochodna używa innego typu magazynu danych, takiego jak relacyjna baza danych, może zostać wykonane inicjowanie połączenia z bazą danych.

Dodatkowe atrybuty, takie jak nazwy plików lub parametry połączenia, są odczytywane przez system konfiguracji ASP.NET i przekazywane do Initialize metody z jego NameValueCollection parametrem.

Uwagi dotyczące dziedziczenia

Podczas zastępowania Initialize(String, NameValueCollection) metody w klasie pochodnej należy najpierw wywołać Initialize(String, NameValueCollection) metodę klasy bazowej przed wykonaniem własnych inicjalizacji.

Dotyczy

Zobacz też