SiteMapProvider.Initialize(String, NameValueCollection) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
- 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.