Поделиться через


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 , которое может содержать дополнительные атрибуты для инициализации поставщика. Эти атрибуты считываются из конфигурации поставщика карты сайта в файле Web.config.

Примеры

В следующем примере кода показано, как переопределить Initialize метод для подготовки подключения к базе данных Microsoft Access.

Строка подключения для 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) метод для базового класса перед выполнением собственных инициализаций.

Применяется к

См. также раздел