語言

SiteMapProvider.Initialize(String, NameValueCollection) 方法

定義

初始化實作, SiteMapProvider 包括載入持久儲存中站點地圖資料所需的資源。

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)

參數

name
String

Name提供者要初始化。

attributes
NameValueCollection

NameValueCollection A可包含額外屬性以協助初始化提供者。 這些屬性是從 Web.config 檔案中的網站地圖提供者設定讀取的。

範例

以下程式碼範例示範如何覆寫準備 Microsoft Access 資料庫連線的方法 Initialize 。

物件的連接字串 OleDbConnection 會被傳遞到 NameValueCollection 方法的 Initialize 參數中。 此時,連線字串由 Web.config 檔案中的提供者專屬區段提供。 此處包含 accessSiteMapConnectionString 一個連接字串,連接至 Microsoft Access 資料庫,該資料庫承載著網站地圖資料。

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

此程式碼範例是本類別更大範例 SiteMapProvider 的一部分。

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

備註

這個 Initialize 方法其實並不建立站點地圖,它只是準備物件的狀態 SiteMapProvider 以完成此事。 預設實作是從網站導覽設定中初始 SecurityTrimmingEnabled 化該網站地圖提供者的屬性。

衍生自 的 SiteMapProvider 類別可以覆寫方法 Initialize ,以初始化任何用於從持久儲存載入網站地圖資料所需的狀態與資源。 例如,如果你的衍生類別使用檔案來儲存網站地圖資料,任何檔案初始化都可以在該 Initialize 方法中執行。 若衍生類別使用其他類型的資料儲存,例如關聯式資料庫,則可能需要初始化資料庫連線。

額外的屬性,如檔案名稱或連線字串,會被 ASP.NET 組態系統讀取,並連同其Initialize參數傳給方法。NameValueCollection

給繼承者的注意事項

在覆 Initialize(String, NameValueCollection) 寫衍生類別的方法時,務必先呼叫 Initialize(String, NameValueCollection) 基底類別的方法,再進行自己的初始化。

適用於

另請參閱