StaticSiteMapProvider Класс

Определение

Обеспечивает частичную реализацию абстрактного класса SiteMapProvider и выступает в качестве базового класса для класса XmlSiteMapProvider, который задан по умолчанию для поставщика карты веб-узла в ASP.NET.Serves as a partial implementation of the abstract SiteMapProvider class and serves as a base class for the XmlSiteMapProvider class, which is the default site map provider in ASP.NET.

public ref class StaticSiteMapProvider abstract : System::Web::SiteMapProvider
public abstract class StaticSiteMapProvider : System.Web.SiteMapProvider
type StaticSiteMapProvider = class
    inherit SiteMapProvider
Public MustInherit Class StaticSiteMapProvider
Inherits SiteMapProvider
Наследование
StaticSiteMapProvider
Производный

Примеры

В следующем примере кода показано, как расширить StaticSiteMapProvider класс, чтобы использовать Microsoft Access в качестве поставщика карт узла.The following code example demonstrates how you to extend the StaticSiteMapProvider class to use Microsoft Access as a site map provider. AccessSiteMapProvider Класс является поставщиком карт узла, поддерживающим только простую одноуровневое иерархию.The AccessSiteMapProvider class is a site map provider that supports only a simple, one-level-deep hierarchy. Таблица, в которой хранятся данные схемы узла, имеет следующую структуру:The table that the site map data is stored in has the following structure:

NODEID URL            NAME       PARENTNODEID  
 ---------------------------------------------  
 1      default.aspx   Default    <NULL>  
 2      catalog.aspx   Catalog    1  
 3      aboutus.aspx   Contact Us 1  
...  

Класс является производным StaticSiteMapProvider от класса и извлекает его сведения из базы данных Microsoft Access, используя OleDbCommand базовые SQL-запросы и объекты OleDbDataReaderи. AccessSiteMapProviderThe AccessSiteMapProvider class is derived from the StaticSiteMapProvider class and retrieves its information from a Microsoft Access database using basic SQL queries and the OleDbCommand and OleDbDataReader objects.

#using <System.Data.dll>
#using <System.Transactions.dll>
#using <System.EnterpriseServices.dll>
#using <System.dll>
#using <System.Web.dll>
#using <System.Configuration.dll>

using namespace System;
using namespace System::Collections;
using namespace System::Collections::Specialized;
using namespace System::Configuration;
using namespace System::Data;
using namespace System::Data::OleDb;
using namespace System::Security::Permissions;
using namespace System::Web;

/// An extremely simple AccessSiteMapProvider that only supports a
/// site map node hierarchy 1 level deep.

[AspNetHostingPermission(SecurityAction::Demand,Level=AspNetHostingPermissionLevel::Minimal)]
public ref class AccessSiteMapProvider: public StaticSiteMapProvider
{
private:
   SiteMapNode ^ rootNode;
   OleDbConnection^ accessConnection;

   // This string is case sensitive.
   String^ AccessConnectionStringName;

public:
   // Implement a default constructor.
   AccessSiteMapProvider()
   {
      initialized = false;
      AccessConnectionStringName = "accessSiteMapConnectionString";
   }


private:

   // Some basic state to help track the initialization state of the provider.
   bool initialized;

public:

   property bool IsInitialized 
   {
      virtual bool get()
      {
         return initialized;
      }

   }

   property SiteMapNode ^ RootNode 
   {

      // Return the root node of the current site map.
      virtual SiteMapNode ^ get() override
      {
         SiteMapNode ^ temp = nullptr;
         temp = BuildSiteMap();
         return temp;
      }

   }

protected:

   virtual SiteMapNode ^ GetRootNodeCore() override
   {
      return RootNode;
   }


public:

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

   ///
   /// SiteMapProvider and StaticSiteMapProvider methods that this derived class must override.
   ///
   // Clean up any collections or other state that an instance of this may hold.
   virtual void Clear() override
   {
      System::Threading::Monitor::Enter( this );
      try
      {
         rootNode = nullptr;
         StaticSiteMapProvider::Clear();
      }
      finally
      {
         System::Threading::Monitor::Exit( this );
      }

   }


public:

   // Build an in-memory representation from persistent
   // storage, and return the root node of the site map.
   virtual SiteMapNode ^ BuildSiteMap() override
   {
      // Since the SiteMap class is static, make sure that it is
      // not modified while the site map is built.
      System::Threading::Monitor::Enter( this );
      try
      {
         
         // If there is no initialization, this method is being
         // called out of order.
         if (  !IsInitialized )
         {
            throw gcnew Exception( "BuildSiteMap called incorrectly." );
         }
         
         // If there is no root node, then there is no site map.
         if ( nullptr == rootNode )
         {
            
            // Start with a clean slate
            Clear();
            
            // Select the root node of the site map from Microsoft Access.
            int rootNodeId = -1;
            if ( accessConnection->State == ConnectionState::Closed )
               accessConnection->Open();
            
            OleDbCommand^ rootNodeCommand = gcnew OleDbCommand
               ("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL", accessConnection);
            OleDbDataReader^ rootNodeReader = rootNodeCommand->ExecuteReader();
            if ( rootNodeReader->HasRows )
            {
               rootNodeReader->Read();
               rootNodeId = rootNodeReader->GetInt32( 0 );
               
               // Create a SiteMapNode that references the current StaticSiteMapProvider.
               rootNode = gcnew SiteMapNode(this, rootNodeId.ToString(), 
                  rootNodeReader->GetString( 1 ),rootNodeReader->GetString( 2 ));
            }
            else
               return nullptr;
            rootNodeReader->Close();
            
            // Select the child nodes of the root node.
            OleDbCommand^ childNodesCommand = gcnew OleDbCommand
               ("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid = ?", accessConnection);
            OleDbParameter^ rootParam = gcnew OleDbParameter( "parentid", OleDbType::Integer);
            rootParam->Value = rootNodeId;
            childNodesCommand->Parameters->Add( rootParam );
            OleDbDataReader^ childNodesReader = childNodesCommand->ExecuteReader();
            if ( childNodesReader->HasRows )
            {
               SiteMapNode ^ childNode = nullptr;
               while ( childNodesReader->Read() )
               {
                  childNode = gcnew SiteMapNode( this, 
                      System::Convert::ToString(childNodesReader->GetInt32( 0 )),
                     childNodesReader->GetString( 1 ),
                     childNodesReader->GetString( 2 ) 
                  );
                  // Use the SiteMapNode AddNode method to add
                  // the SiteMapNode to the ChildNodes collection.
                  AddNode( childNode, rootNode );
               }
            }
            childNodesReader->Close();
            accessConnection->Close();
         }
         return rootNode;
      }
      finally
      {
         System::Threading::Monitor::Exit( this );
      }

   }

};

namespace Samples.AspNet.CS.Controls {

    using System;
    using System.Collections;
    using System.Collections.Specialized;
    using System.Data;
    using System.Data.OleDb;
    using System.Security.Permissions;
    using System.Web;

    /// An extremely simple AccessSiteMapProvider that only supports a
    /// site map node hierarchy 1 level deep.
    [AspNetHostingPermission(SecurityAction.Demand, Level=AspNetHostingPermissionLevel.Minimal)]
    public class AccessSiteMapProvider : StaticSiteMapProvider
    {
        private SiteMapNode rootNode =  null;
        private OleDbConnection accessConnection = null;

        // This string is case sensitive.
        private string AccessConnectionStringName = "accessSiteMapConnectionString";

        // Implement a default constructor.
        public AccessSiteMapProvider () { }

        // Some basic state to help track the initialization state of the provider.
        private bool initialized = false;
        public virtual bool IsInitialized {
            get {
                return initialized;
            }
        }
        // Return the root node of the current site map.
        public override SiteMapNode RootNode {
            get {
                SiteMapNode temp = null;
                temp = BuildSiteMap();
                return temp;
            }
        }
        protected override SiteMapNode GetRootNodeCore() {
            return RootNode;
        }
        // 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;
        }

        ///
        /// SiteMapProvider and StaticSiteMapProvider methods that this derived class must override.
        ///
        // Clean up any collections or other state that an instance of this may hold.
        protected override void Clear() {
            lock (this) {
                rootNode = null;
                base.Clear();
            }
        }

        // Build an in-memory representation from persistent
        // storage, and return the root node of the site map.
        public override SiteMapNode BuildSiteMap() {

            // Since the SiteMap class is static, make sure that it is
            // not modified while the site map is built.
            lock(this) {

                // If there is no initialization, this method is being
                // called out of order.
                if (! IsInitialized) {
                    throw new Exception("BuildSiteMap called incorrectly.");
                }

                // If there is no root node, then there is no site map.
                if (null == rootNode) {
                    // Start with a clean slate
                    Clear();

                    // Select the root node of the site map from Microsoft Access.
                    int rootNodeId = -1;

                    if (accessConnection.State == ConnectionState.Closed)
                        accessConnection.Open();
                    OleDbCommand rootNodeCommand =
                        new OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL",
                                         accessConnection);
                    OleDbDataReader rootNodeReader = rootNodeCommand.ExecuteReader();

                    if(rootNodeReader.HasRows) {
                        rootNodeReader.Read();
                        rootNodeId = rootNodeReader.GetInt32(0);
                        // Create a SiteMapNode that references the current StaticSiteMapProvider.
                        rootNode   = new SiteMapNode(this,
                                                     rootNodeId.ToString(),
                                                     rootNodeReader.GetString(1),
                                                     rootNodeReader.GetString(2));

                    }
                    else return null;

                    rootNodeReader.Close();
                    // Select the child nodes of the root node.
                    OleDbCommand childNodesCommand =
                        new OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid = ?",
                                         accessConnection);
                    OleDbParameter rootParam = new OleDbParameter("parentid", OleDbType.Integer);
                    rootParam.Value = rootNodeId;
                    childNodesCommand.Parameters.Add(rootParam);

                    OleDbDataReader childNodesReader = childNodesCommand.ExecuteReader();

                    if (childNodesReader.HasRows) {

                        SiteMapNode childNode = null;
                        while(childNodesReader.Read()) {
                            childNode =  new SiteMapNode(this,
                                                         childNodesReader.GetInt32(0).ToString(),
                                                         childNodesReader.GetString(1),
                                                         childNodesReader.GetString(2));

                            // Use the SiteMapNode AddNode method to add
                            // the SiteMapNode to the ChildNodes collection.
                            AddNode(childNode, rootNode);
                        }
                    }

                    childNodesReader.Close();
                    accessConnection.Close();
                }
                return rootNode;
            }
        }
    }
}
Imports System.Collections
Imports System.Collections.Specialized
Imports System.Data
Imports System.Data.OleDb
Imports System.Security.Permissions
Imports System.Web

Namespace Samples.AspNet.VB.Controls
 
    ' An extremely simple AccessSiteMapProvider that only supports a
    ' site map node hierarchy one level deep.
    <AspNetHostingPermission(SecurityAction.Demand, Level:=AspNetHostingPermissionLevel.Minimal)> _
    Public Class AccessSiteMapProvider
        Inherits StaticSiteMapProvider

        Private aRootNode As SiteMapNode = Nothing
        Private accessConnection As OleDbConnection = Nothing

        ' This string is case sensitive.
        Private AccessConnectionStringName As String = "accessSiteMapConnectionString"

        ' Implement a default constructor.
        Public Sub New()
        End Sub

        ' Some basic state to help track the initialization state of the provider.
        Private initialized As Boolean = False

        Public Overridable ReadOnly Property IsInitialized() As Boolean
            Get
                Return initialized
            End Get
        End Property

        ' Return the root node of the current site map.
        Public Overrides ReadOnly Property RootNode() As SiteMapNode
            Get
                Return BuildSiteMap()
            End Get
        End Property

        Protected Overrides Function GetRootNodeCore() As SiteMapNode
            Return RootNode
        End Function

        ' 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

        ' SiteMapProvider and StaticSiteMapProvider methods that this derived class must override.
        '
        ' Clean up any collections or other state that an instance of this may hold.
        Protected Overrides Sub Clear()
            SyncLock Me
                aRootNode = Nothing
                MyBase.Clear()
            End SyncLock
        End Sub

        ' Build an in-memory representation from persistent
        ' storage, and return the root node of the site map.
        Public Overrides Function BuildSiteMap() As SiteMapNode

            ' Since the SiteMap class is static, make sure that it is
            ' not modified while the site map is built.
            SyncLock Me

                ' If there is no initialization, this method is being
                ' called out of order.
                If Not IsInitialized Then
                    Throw New Exception("BuildSiteMap called incorrectly.")
                End If

                ' If there is no root node, then there is no site map.
                If aRootNode Is Nothing Then
                    ' Start with a clean slate
                    Clear()

                    ' Select the root node of the site map from Microsoft Access.
                    Dim rootNodeId As Integer = -1

                    If accessConnection.State = ConnectionState.Closed Then
                        accessConnection.Open()
                    End If
                    Dim rootNodeCommand As New OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL", accessConnection)
                    Dim rootNodeReader As OleDbDataReader = rootNodeCommand.ExecuteReader()

                    If rootNodeReader.HasRows Then
                        rootNodeReader.Read()
                        rootNodeId = rootNodeReader.GetInt32(0)
                        ' Create a SiteMapNode that references the current StaticSiteMapProvider.
                        aRootNode = New SiteMapNode(Me, rootNodeId.ToString(), rootNodeReader.GetString(1), rootNodeReader.GetString(2))
                    Else
                        Return Nothing
                    End If
                    rootNodeReader.Close()
                    ' Select the child nodes of the root node.
                    Dim childNodesCommand As New OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid = ?", accessConnection)
                    Dim rootParam As New OleDbParameter("parentid", OleDbType.Integer)
                    rootParam.Value = rootNodeId
                    childNodesCommand.Parameters.Add(rootParam)

                    Dim childNodesReader As OleDbDataReader = childNodesCommand.ExecuteReader()

                    If childNodesReader.HasRows Then

                        Dim childNode As SiteMapNode = Nothing
                        While childNodesReader.Read()
                            childNode = New SiteMapNode(Me, _
                            childNodesReader.GetInt32(0).ToString(), _
                            childNodesReader.GetString(1), _
                            childNodesReader.GetString(2))

                            ' Use the SiteMapNode AddNode method to add
                            ' the SiteMapNode to the ChildNodes collection.
                            AddNode(childNode, aRootNode)
                        End While
                    End If

                    childNodesReader.Close()
                    accessConnection.Close()
                End If
                Return aRootNode
            End SyncLock

        End Function 'BuildSiteMap

    End Class

End Namespace

Наконец, AccessSiteMapProvider в следующем файле Web. config настраивается как поставщик по умолчанию.Finally, the AccessSiteMapProvider is configured as the default provider in the following Web.config file.

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

Комментарии

RemoveNode AddNode SiteMapProvider BuildSiteMap Clear Класс является частичной реализацией абстрактного класса и предоставляет два дополнительных метода: и, а также абстрактные и защищенные методы. StaticSiteMapProviderThe StaticSiteMapProvider class is a partial implementation of the abstract SiteMapProvider class and supplies two additional methods: AddNode and RemoveNode, as well as the abstract BuildSiteMap and protected Clear methods.

Класс поддерживает запись поставщика карт узла (например XmlSiteMapProvider,), который преобразует карту узла, которая хранится в постоянном хранилище, в ту, которая хранится в памяти. StaticSiteMapProviderThe StaticSiteMapProvider class supports writing a site map provider (for example, an XmlSiteMapProvider) that translates a site map that is stored in persistent storage to one that is stored in memory. Класс предоставляет базовые реализации для хранения и SiteMapNode извлечения объектов. StaticSiteMapProviderThe StaticSiteMapProvider class provides basic implementations for storing and retrieving SiteMapNode objects.

Классы SiteMapProvider иStaticSiteMapProvider поддерживают концепцию иерархии поставщика карт узла, где поставщик карт узла может иметь иерархическую связь с другими поставщиками карт веб-узла.The SiteMapProvider and StaticSiteMapProvider classes support the concept of a site map provider hierarchy, where a site map provider can have a hierarchical relationship with other site map providers. Этот шаблон реализуется с RootProvider помощью свойств и. ParentProviderThis pattern is implemented with the RootProvider and ParentProvider properties.

Класс сохраняет свои SiteMapNode объекты в хэш-таблицах SiteMapNode.Url и внутренне использует свойство страниц, представленное узлами схемы узла, в качестве ключей. StaticSiteMapProviderThe StaticSiteMapProvider class stores its SiteMapNode objects in hash tables and internally uses the SiteMapNode.Url property of the pages, represented by site map nodes, as keys. (Если узел схемы узла не указывает URL-адрес, он будет отслеживанием с помощью автоматически созданного уникального ключа.) В результате нельзя использовать узлы карт узла, где узел схемы узла с одним и тем же URL-адресом используется более одного раза.(If a site map node does not specify a URL, it is tracked using an automatically generated unique key.) As a result, you cannot have site map nodes wherein a site map node with the same URL is used more than once. Например, попытка загрузить узел схемы узла, показанный в следующем примере кода, с XmlSiteMapProvider классом, который является поставщиком ASP.NET узла по умолчанию или поставщиком карт узла, производным StaticSiteMapProvider от класса, не будет работать, так как Страница AboutUs. aspx используется несколько раз.For example, attempting to load the site map node illustrated in the following code example with the XmlSiteMapProvider class, which is the default ASP.NET site map provider, or any site map provider that is derived from the StaticSiteMapProvider class will not work because the AboutUs.aspx page is used more than once.

<sitemap>  
  <sitemapnode title="Home" description="Home" url="default.aspx" >  
    <sitemapnode title="Catalog" description="Our catalog" url="catalog.aspx"/>  
    <sitemapnode title="About Us" description="All about our company" url="aboutus.aspx"/>  
    <sitemapnode title="Driving Directions" description="Directions to our store" url="aboutus.aspx"/>  
  </sitemapnode>  
</sitemap>  

При расширении StaticSiteMapProvider класса три наиболее важных метода — это GetRootNodeCoreметоды, Initializeи BuildSiteMap .If you are extending the StaticSiteMapProvider class, the three most important methods are the GetRootNodeCore, Initialize, and BuildSiteMap methods. Методы Clear иFindSiteMapNode имеют реализации по умолчанию, достаточные для большинства пользовательских реализаций поставщика карт веб-узла.The Clear and FindSiteMapNode methods have default implementations that are sufficient for most custom site map provider implementations.

Initialize Метод вызывается для инициализации производных поставщиков карт веб-узла, включая все ресурсы, необходимые для загрузки данных карт веб-узла, но пытается построить узел схемы узла в памяти.The Initialize method is called to initialize derived site map providers, including any resources that are required to load site map data, but it does attempt to build the site map node in memory. Если ваш производный класс использует файлы для хранения данных карт веб-узла, здесь можно выполнить инициализацию любого файла.If your derived class is using files to store site map data, any file initialization can be performed here. Если узел схемы узла использует другой тип хранилища данных, например реляционную базу данных, может быть выполнена инициализация подключения.If the site map node uses some other type of data store, such as a relational database, initializing a connection might be performed here. Дополнительные атрибуты, такие как имена файлов или строки подключения, помещаемые в элемент поставщика схемы узла в конфигурации, обрабатываются системой конфигурации ASP.NET и передаются Initialize в метод attributes с параметром.Additional attributes, such as file names or connection strings that are placed on the site map provider element in the configuration are processed by the ASP.NET configuration system and passed to the Initialize method with the attributes parameter.

Метод должен быть переопределен всеми классами, производными StaticSiteMapProvider от класса, и вызываться для загрузки узла схемы узла из постоянного хранилища и его преобразования во внутреннее представление. BuildSiteMapThe BuildSiteMap method must be overridden by all classes that are derived from the StaticSiteMapProvider class and is called to load the site map node from persistent storage and convert it to an internal representation. Метод вызывается внутренним образом во многих реализациях StaticSiteMapProvider элементов по умолчанию классов и XmlSiteMapProvider. BuildSiteMapThe BuildSiteMap method is called internally in many of the default member implementations of the StaticSiteMapProvider and XmlSiteMapProvider classes. Если вы реализуете собственный поставщик карт веб-сайтов, убедитесь, что обработка данных карт узла выполняется один раз, BuildSiteMap и последующие вызовы метода будут возвращаться немедленно, если сведения о карте сайта уже загружены.If you implement your own site map provider, ensure that site map data processing occurs once and subsequent calls to the BuildSiteMap method return immediately, if site map information has already been loaded. При реализации BuildSiteMap метода убедитесь, что он является потокобезопасным, так как несколько одновременных запросов страниц могут косвенно придавать несколько вызовов для загрузки сведений о карте узла.When you implement the BuildSiteMap method, ensure it is thread safe, as multiple concurrent page requests can result indirectly in multiple calls to load site map information. Инфраструктура карт узла поддерживает отображение сведений о карте узла на основе роли пользователя.The site map infrastructure supports displaying site map information based on the user's role. В зависимости Roles от свойства, которое поддерживаются отдельными SiteMapNode объектами, для разных пользователей может существовать другая структура навигации.Depending on the Roles property that are supported by the individual SiteMapNode objects, a different navigation structure can exist for different users. Реализации по умолчанию для элементов класса "схема узла", используемые для StaticSiteMapProvider получения узла, выполняют автоматическое усечение безопасности, IsAccessibleToUser вызывая метод.The default implementations of the site map node retrieval members of the StaticSiteMapProvider class perform security trimming automatically by calling the IsAccessibleToUser method.

Методы AddNode, Clear иRemoveNode управляют внутренними коллекциями, которые используются для контроля узлов карт узла в безопасном для потоков режиме.The AddNode, Clear and RemoveNode methods manipulate the internal collections that are used to track site map nodes in a thread-safe manner.

Примечания для тех, кто реализует этот метод

При наследовании от StaticSiteMapProvider класса необходимо переопределить следующий член: BuildSiteMap().When you inherit from the StaticSiteMapProvider class, you must override the following member: BuildSiteMap().

Конструкторы

StaticSiteMapProvider()

Инициализирует новый экземпляр класса StaticSiteMapProvider.Initializes a new instance of the StaticSiteMapProvider class.

Свойства

CurrentNode

Получает объект SiteMapNode, представляющий запрашиваемую в данный момент страницу.Gets the SiteMapNode object that represents the currently requested page.

(Унаследовано от SiteMapProvider)
Description

Возвращает краткое, понятное описание, подходящее для отображения в инструментах администрирования или других пользовательских интерфейсах (UI).Gets a brief, friendly description suitable for display in administrative tools or other user interfaces (UIs).

(Унаследовано от ProviderBase)
EnableLocalization

Получает или задает логическое значение, показывающее, возвращается ли локализованное значение атрибутов SiteMapNode.Gets or sets a Boolean value indicating whether localized values of SiteMapNode attributes are returned.

(Унаследовано от SiteMapProvider)
Name

Возвращает понятное имя, используемое для ссылки на поставщика во время конфигурирования.Gets the friendly name used to refer to the provider during configuration.

(Унаследовано от ProviderBase)
ParentProvider

Получает или задает родительский объект SiteMapProvider текущего поставщика.Gets or sets the parent SiteMapProvider object of the current provider.

(Унаследовано от SiteMapProvider)
ResourceKey

Возвращает или задает ключ ресурса, используемый для локализации атрибутов SiteMapNode.Get or sets the resource key that is used for localizing SiteMapNode attributes.

(Унаследовано от SiteMapProvider)
RootNode

Получает корневой объект SiteMapNode данных карты веб-узла, представленных текущим поставщиком.Gets the root SiteMapNode object of the site map data that the current provider represents.

(Унаследовано от SiteMapProvider)
RootProvider

Получает корневой объект SiteMapProvider в текущую иерархию поставщиков.Gets the root SiteMapProvider object in the current provider hierarchy.

(Унаследовано от SiteMapProvider)
SecurityTrimmingEnabled

Получает логическое значение, показывающее, фильтрует ли поставщик карты веб-узла узлы карты веб-узла на основе роли пользователя.Gets a Boolean value indicating whether a site map provider filters site map nodes based on a user's role.

(Унаследовано от SiteMapProvider)

Методы

AddNode(SiteMapNode)

Добавляет объект SiteMapNode в коллекцию узлов, которую поддерживает поставщик карты веб-узла.Adds a SiteMapNode object to the node collection that is maintained by the site map provider.

(Унаследовано от SiteMapProvider)
AddNode(SiteMapNode, SiteMapNode)

Добавляет объект SiteMapNode в коллекции, которые поддерживаются поставщиком карты веб-узла, и устанавливает между объектами SiteMapNode связь типа "родители-потомки".Adds a SiteMapNode to the collections that are maintained by the site map provider and establishes a parent/child relationship between the SiteMapNode objects.

BuildSiteMap()

При переопределении в производном классе загружает сведения о карте веб-узла из постоянного хранилища и создает их в памяти.When overridden in a derived class, loads the site map information from persistent storage and builds it in memory.

Clear()

Удаляет все элементы из коллекции родительских и дочерних узлов карты веб-узла, которые отслеживаются StaticSiteMapProvider в качестве части их состояния.Removes all elements in the collections of child and parent site map nodes that the StaticSiteMapProvider tracks as part of its state.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
FindSiteMapNode(HttpContext)

Представляет объект SiteMapNode, представляющий запрашиваемую в настоящий момент страницу с использованием указанного объекта HttpContext.Retrieves a SiteMapNode object that represents the currently requested page using the specified HttpContext object.

(Унаследовано от SiteMapProvider)
FindSiteMapNode(String)

Получает объект SiteMapNode, который представляет страницу по указанному URL-адресу.Retrieves a SiteMapNode object that represents the page at the specified URL.

FindSiteMapNodeFromKey(String)

Получает объект SiteMapNode на основе указанного ключа.Retrieves a SiteMapNode object based on a specified key.

GetChildNodes(SiteMapNode)

Извлекает дочерние узлы карты веб-узла конкретного объекта SiteMapNode.Retrieves the child site map nodes of a specific SiteMapNode object.

GetCurrentNodeAndHintAncestorNodes(Int32)

Предоставляет оптимизированный метод просмотра для поставщиков карт веб-узлов во время получения узла для запрашиваемой в настоящее время страницы и извлекает родительские узлы и узлы-предки карт веб-узлов для текущей страницы.Provides an optimized lookup method for site map providers when retrieving the node for the currently requested page and fetching the parent and ancestor site map nodes for the current page.

(Унаследовано от SiteMapProvider)
GetCurrentNodeAndHintNeighborhoodNodes(Int32, Int32)

Предоставляет оптимизированный метод просмотра для поставщиков карт веб-узлов во время получения узла для запрашиваемой в настоящее время страницы и извлекает узлы карты веб-узла в пределах текущего узла.Provides an optimized lookup method for site map providers when retrieving the node for the currently requested page and fetching the site map nodes in the proximity of the current node.

(Унаследовано от SiteMapProvider)
GetHashCode()

Служит в качестве хэш-функции по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetParentNode(SiteMapNode)

Представляет родительский узел карты веб-узла указанного объекта SiteMapNode.Retrieves the parent site map node of a specific SiteMapNode object.

GetParentNodeRelativeToCurrentNodeAndHintDownFromParent(Int32, Int32)

Предоставляет оптимизированный метод просмотра для поставщиков карт веб-узлов во время получения узла-предка для запрашиваемой в настоящее время страницы и извлекает узлы-потомки для узла-предка.Provides an optimized lookup method for site map providers when retrieving an ancestor node for the currently requested page and fetching the descendant nodes for the ancestor.

(Унаследовано от SiteMapProvider)
GetParentNodeRelativeToNodeAndHintDownFromParent(SiteMapNode, Int32, Int32)

Предоставляет оптимизированный метод просмотра для поставщиков карт веб-узлов во время получения узла-предка для указанного объекта SiteMapNode и извлечения его дочерних узлов.Provides an optimized lookup method for site map providers when retrieving an ancestor node for the specified SiteMapNode object and fetching its child nodes.

(Унаследовано от SiteMapProvider)
GetRootNodeCore()

Во время переопределения в производном классе получает корневой узел для всех узлов, которыми в настоящее время управляет текущий поставщик.When overridden in a derived class, retrieves the root node of all the nodes that are currently managed by the current provider.

(Унаследовано от SiteMapProvider)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
HintAncestorNodes(SiteMapNode, Int32)

Предоставляет метод, который поставщики карт веб-узлов могут переопределить для проведения оптимизированного получения одного или нескольких уровней родительских и дочерних узлов, связанных с указанным объектом SiteMapNode.Provides a method that site map providers can override to perform an optimized retrieval of one or more levels of parent and ancestor nodes, relative to the specified SiteMapNode object.

(Унаследовано от SiteMapProvider)
HintNeighborhoodNodes(SiteMapNode, Int32, Int32)

Предоставляет метод, который поставщики карт веб-узлов могут переопределить для проведения оптимизированного получения узлов, найденных в пределах указанного узла.Provides a method that site map providers can override to perform an optimized retrieval of nodes found in the proximity of the specified node.

(Унаследовано от SiteMapProvider)
Initialize(String, NameValueCollection)

Выполняет инициализацию реализации SiteMapProvider, включающей любые ресурсы, которые необходимы для загрузки данных карты веб-узла из постоянного хранилища.Initializes the SiteMapProvider implementation, including any resources that are needed to load site map data from persistent storage.

(Унаследовано от SiteMapProvider)
IsAccessibleToUser(HttpContext, SiteMapNode)

Возвращает логическое значение, показывающее, может ли пользователь просматривать указанный объект SiteMapNode в заданном контексте.Retrieves a Boolean value indicating whether the specified SiteMapNode object can be viewed by the user in the specified context.

(Унаследовано от SiteMapProvider)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
RemoveNode(SiteMapNode)

Удаляет указанный SiteMapNode из всех коллекций узлов карт веб-узлов, которые отслеживаются поставщиком карты веб-узла.Removes the specified SiteMapNode object from all site map node collections that are tracked by the site map provider.

ResolveSiteMapNode(HttpContext)

Вызывает событие SiteMapResolve.Raises the SiteMapResolve event.

(Унаследовано от SiteMapProvider)
ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)

События

SiteMapResolve

Происходит при вызове свойства CurrentNode.Occurs when the CurrentNode property is called.

(Унаследовано от SiteMapProvider)

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

Дополнительно