StaticSiteMapProvider Classe

Definizione

Viene utilizzato come implementazione parziale della classe SiteMapProvider abstract e come classe base per la classe XmlSiteMapProvider, che rappresenta il provider della mappa del sito predefinito in 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
Ereditarietà
StaticSiteMapProvider
Derivato

Esempi

Nell'esempio di codice seguente viene illustrata la modalità StaticSiteMapProvider di estensione della classe per l'utilizzo di Microsoft Access come provider della mappa del sito.The following code example demonstrates how you to extend the StaticSiteMapProvider class to use Microsoft Access as a site map provider. La AccessSiteMapProvider classe è un provider della mappa del sito che supporta solo una gerarchia semplice a livello profondo.The AccessSiteMapProvider class is a site map provider that supports only a simple, one-level-deep hierarchy. La tabella in cui sono archiviati i dati della mappa del sito presenta la struttura seguente: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  
...  

La AccessSiteMapProvider classe è derivata StaticSiteMapProvider dalla classe e recupera le informazioni da un database di Microsoft Access usando le OleDbCommand query SQL di base e OleDbDataReader gli oggetti e.The 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

Infine, la AccessSiteMapProvider viene configurata come provider predefinito nel seguente file 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>  

Commenti

La StaticSiteMapProvider classe è un'implementazione parziale della classe astratta SiteMapProvider e fornisce due metodi aggiuntivi: AddNode e RemoveNode, così come i metodi astratti BuildSiteMap e protetti Clear .The 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.

La StaticSiteMapProvider classe supporta la scrittura di un provider della mappa del sito ( XmlSiteMapProviderad esempio, un) che converte una mappa del sito archiviata in un archivio permanente in un archivio archiviato in memoria.The 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. La StaticSiteMapProvider classe fornisce le implementazioni di base per l'archiviazione SiteMapNode e il recupero di oggetti.The StaticSiteMapProvider class provides basic implementations for storing and retrieving SiteMapNode objects.

Le SiteMapProvider classi StaticSiteMapProvider e supportano il concetto di gerarchia del provider della mappa del sito, in cui un provider della mappa del sito può avere una relazione gerarchica con altri provider della mappa del sito.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. Questo modello viene implementato con le RootProvider proprietà ParentProvider e.This pattern is implemented with the RootProvider and ParentProvider properties.

La StaticSiteMapProvider classe archivia i SiteMapNode relativi oggetti nelle tabelle hash e usa internamente la SiteMapNode.Url proprietà delle pagine, rappresentate dai nodi della mappa del sito, come chiavi.The 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. Se un nodo della mappa del sito non specifica un URL, viene rilevata utilizzando una chiave univoca generata automaticamente. Di conseguenza, non è possibile avere nodi della mappa del sito in cui un nodo della mappa del sito con lo stesso URL viene usato più di una volta.(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. Ad esempio, il tentativo di caricare il nodo della mappa del sito illustrato nell'esempio di codice seguente XmlSiteMapProvider con la classe, che è il provider della mappa del sito ASP.NET predefinito, o qualsiasi provider della mappa StaticSiteMapProvider del sito derivato dalla classe non funzionerà perché il La pagina AboutUs. aspx viene utilizzata più di una volta.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>  

Se si StaticSiteMapProvider sta estendendo la classe, i tre metodi più importanti sono i GetRootNodeCoremetodi BuildSiteMap , Initializee.If you are extending the StaticSiteMapProvider class, the three most important methods are the GetRootNodeCore, Initialize, and BuildSiteMap methods. I Clear metodi FindSiteMapNode e hanno implementazioni predefinite sufficienti per la maggior parte delle implementazioni del provider della mappa del sito personalizzate.The Clear and FindSiteMapNode methods have default implementations that are sufficient for most custom site map provider implementations.

Il Initialize metodo viene chiamato per inizializzare i provider della mappa del sito derivati, incluse le risorse necessarie per caricare i dati della mappa del sito, ma tenta di compilare il nodo della mappa del sito in memoria.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. Se la classe derivata usa file per archiviare i dati della mappa del sito, è possibile eseguire l'inizializzazione dei file qui.If your derived class is using files to store site map data, any file initialization can be performed here. Se il nodo della mappa del sito usa un altro tipo di archivio dati, ad esempio un database relazionale, l'inizializzazione di una connessione potrebbe essere eseguita qui.If the site map node uses some other type of data store, such as a relational database, initializing a connection might be performed here. Attributi aggiuntivi, ad esempio i nomi di file o le stringhe di connessione posizionati nell'elemento del provider della mappa del sito nella configurazione, vengono elaborati dal sistema di Initialize configurazione ASP.NET e attributes passati al metodo con il parametro.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.

Il BuildSiteMap metodo deve essere sottoposto a override da tutte le classi derivate StaticSiteMapProvider dalla classe e viene chiamato per caricare il nodo della mappa del sito dall'archivio permanente e convertirlo in una rappresentazione interna.The 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. Il BuildSiteMap metodo viene chiamato internamente in molte delle implementazioni dei membri predefinite StaticSiteMapProvider delle classi XmlSiteMapProvider e.The BuildSiteMap method is called internally in many of the default member implementations of the StaticSiteMapProvider and XmlSiteMapProvider classes. Se si implementa il provider della mappa del sito, assicurarsi che l'elaborazione dei dati della mappa del sito venga eseguita BuildSiteMap una volta e che le chiamate successive al metodo vengano restituite immediatamente, se le informazioni sulla mappa del sito sono già state caricateIf 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. Quando si implementa il BuildSiteMap metodo, assicurarsi che sia thread-safe, in quanto più richieste di pagine simultanee possono risultare indirettamente in più chiamate per caricare le informazioni sulla mappa del sito.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. L'infrastruttura della mappa del sito supporta la visualizzazione delle informazioni sulla mappa del sito in base al ruolo dell'utente.The site map infrastructure supports displaying site map information based on the user's role. A seconda della Roles proprietà supportata dai singoli SiteMapNode oggetti, è possibile che esista una struttura di navigazione diversa per utenti diversi.Depending on the Roles property that are supported by the individual SiteMapNode objects, a different navigation structure can exist for different users. Le implementazioni predefinite dei membri di recupero del nodo della mappa del sito StaticSiteMapProvider della classe eseguono automaticamente la rimozione della sicurezza IsAccessibleToUser chiamando il metodo.The default implementations of the site map node retrieval members of the StaticSiteMapProvider class perform security trimming automatically by calling the IsAccessibleToUser method.

I AddNodemetodi Clear , eRemoveNode modificano le raccolte interne utilizzate per tenere traccia dei nodi della mappa del sito in modo thread-safe.The AddNode, Clear and RemoveNode methods manipulate the internal collections that are used to track site map nodes in a thread-safe manner.

Note per gli eredi

Quando si eredita dalla StaticSiteMapProvider classe, è necessario eseguire l'override del membro seguente:. BuildSiteMap()When you inherit from the StaticSiteMapProvider class, you must override the following member: BuildSiteMap().

Costruttori

StaticSiteMapProvider()

Inizializza una nuova istanza della classe StaticSiteMapProvider.Initializes a new instance of the StaticSiteMapProvider class.

Proprietà

CurrentNode

Ottiene l'oggetto SiteMapNode che rappresenta la pagina attualmente richiesta.Gets the SiteMapNode object that represents the currently requested page.

(Ereditato da SiteMapProvider)
Description

Ottiene una breve descrizione di facile comprensione che è possibile visualizzare in strumenti di amministrazione o in altre interfacce utente (UI, User Interface).Gets a brief, friendly description suitable for display in administrative tools or other user interfaces (UIs).

(Ereditato da ProviderBase)
EnableLocalization

Ottiene o imposta un valore booleano che indica se i valori personalizzati degli attributi SiteMapNode vengono restituiti.Gets or sets a Boolean value indicating whether localized values of SiteMapNode attributes are returned.

(Ereditato da SiteMapProvider)
Name

Ottiene il nome descrittivo utilizzato per fare riferimento al provider durante la configurazione.Gets the friendly name used to refer to the provider during configuration.

(Ereditato da ProviderBase)
ParentProvider

Ottiene o imposta l'oggetto SiteMapProvider padre del provider corrente.Gets or sets the parent SiteMapProvider object of the current provider.

(Ereditato da SiteMapProvider)
ResourceKey

Ottiene o imposta la chiave di risorsa usata per localizzare gli attributi di SiteMapNode.Get or sets the resource key that is used for localizing SiteMapNode attributes.

(Ereditato da SiteMapProvider)
RootNode

Ottiene l'oggetto SiteMapNode radice dei dati della mappa del sito rappresentati dal provider corrente.Gets the root SiteMapNode object of the site map data that the current provider represents.

(Ereditato da SiteMapProvider)
RootProvider

Ottiene l'oggetto SiteMapProvider radice della gerarchia di provider corrente.Gets the root SiteMapProvider object in the current provider hierarchy.

(Ereditato da SiteMapProvider)
SecurityTrimmingEnabled

Ottiene un valore booleano che indica se un provider della mappa del sito filtra i nodi della mappa del sito in base al ruolo dell'utente.Gets a Boolean value indicating whether a site map provider filters site map nodes based on a user's role.

(Ereditato da SiteMapProvider)

Metodi

AddNode(SiteMapNode)

Aggiunge un oggetto SiteMapNode alla raccolta dei nodi gestiti dal provider della mappa del sito.Adds a SiteMapNode object to the node collection that is maintained by the site map provider.

(Ereditato da SiteMapProvider)
AddNode(SiteMapNode, SiteMapNode)

Aggiunge una classe SiteMapNode agli insiemi gestiti dal provider della mappa del sito e stabilisce una relazione padre/figlio tra gli oggetti 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()

Quando sottoposto a override in una classe derivata, carica le informazioni sulla mappa del sito dall'archivio permanente e lo compila nella memoria.When overridden in a derived class, loads the site map information from persistent storage and builds it in memory.

Clear()

Rimuove tutti gli elementi negli insiemi di nodi figlio e padre della mappa del sito che la classe StaticSiteMapProvider traccia come parte del relativo stato.Removes all elements in the collections of child and parent site map nodes that the StaticSiteMapProvider tracks as part of its state.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Ereditato da Object)
FindSiteMapNode(HttpContext)

Recupera un oggetto SiteMapNode che rappresenta la pagina attualmente richiesta usando l'oggetto HttpContext specificato.Retrieves a SiteMapNode object that represents the currently requested page using the specified HttpContext object.

(Ereditato da SiteMapProvider)
FindSiteMapNode(String)

Recupera un oggetto SiteMapNode che rappresenta la pagina nell'URL specificato.Retrieves a SiteMapNode object that represents the page at the specified URL.

FindSiteMapNodeFromKey(String)

Recupera un oggetto SiteMapNode a partire da una chiave specificata.Retrieves a SiteMapNode object based on a specified key.

GetChildNodes(SiteMapNode)

Recupera i nodi figlio della mappa del sito di un oggetto SiteMapNode specifico.Retrieves the child site map nodes of a specific SiteMapNode object.

GetCurrentNodeAndHintAncestorNodes(Int32)

Specifica un metodo di ricerca ottimizzato per i provider della mappa del sito al momento del recupero del nodo per la pagina richiesta attualmente e dei nodi padre e predecessore per la mappa del sito per la pagina corrente.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.

(Ereditato da SiteMapProvider)
GetCurrentNodeAndHintNeighborhoodNodes(Int32, Int32)

Specifica un metodo di ricerca ottimizzato per i provider della mappa del sito al momento del recupero del nodo per la pagina richiesta attualmente e dei nodi della mappa del sito in prossimità del nodo corrente.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.

(Ereditato da SiteMapProvider)
GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Ereditato da Object)
GetParentNode(SiteMapNode)

Recupera il nodo padreo della mappa del sito di un oggetto SiteMapNode specifico.Retrieves the parent site map node of a specific SiteMapNode object.

GetParentNodeRelativeToCurrentNodeAndHintDownFromParent(Int32, Int32)

Specifica un metodo di ricerca ottimizzato per i provider della mappa del sito al momento del recupero di un nodo predecessore per la pagina richiesta attualmente e dei nodi discendente per il predecessore.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.

(Ereditato da SiteMapProvider)
GetParentNodeRelativeToNodeAndHintDownFromParent(SiteMapNode, Int32, Int32)

Specifica un metodo di ricerca ottimizzato per i provider della mappa del sito quando si recupera un nodo predecessore per l'oggetto SiteMapNode specificato insieme ai relativi nodi figlio.Provides an optimized lookup method for site map providers when retrieving an ancestor node for the specified SiteMapNode object and fetching its child nodes.

(Ereditato da SiteMapProvider)
GetRootNodeCore()

Quando sottoposto a override in una classe derivata, recupera il nodo radice di tutti i nodi gestiti attualmente dal provider corrente.When overridden in a derived class, retrieves the root node of all the nodes that are currently managed by the current provider.

(Ereditato da SiteMapProvider)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
HintAncestorNodes(SiteMapNode, Int32)

Specifica un metodo del quale i provider della mappa del sito possono eseguire l'override per un recupero ottimizzato di uno o più livelli di nodi padre e predecessore, in relazione all'oggetto SiteMapNode specificato.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.

(Ereditato da SiteMapProvider)
HintNeighborhoodNodes(SiteMapNode, Int32, Int32)

Specifica un metodo del quale i provider della mappa del sito possono eseguire l'override per un recupero ottimizzato dei nodi trovati in prossimità del nodo specificato.Provides a method that site map providers can override to perform an optimized retrieval of nodes found in the proximity of the specified node.

(Ereditato da SiteMapProvider)
Initialize(String, NameValueCollection)

Inizializza l'implementazione SiteMapProvider, incluse le risorse necessarie per caricare i dati della mappa del sito dall'archiviazione persistente.Initializes the SiteMapProvider implementation, including any resources that are needed to load site map data from persistent storage.

(Ereditato da SiteMapProvider)
IsAccessibleToUser(HttpContext, SiteMapNode)

Recupera un valore booleano che indica se l'oggetto SiteMapNode specificato può essere visualizzato dall'utente nel contesto specifico.Retrieves a Boolean value indicating whether the specified SiteMapNode object can be viewed by the user in the specified context.

(Ereditato da SiteMapProvider)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
RemoveNode(SiteMapNode)

Rimuove l'oggetto SiteMapNode specificato da tutti gli insiemi di nodi della mappa del sito tracciati dal provider della mappa del sito.Removes the specified SiteMapNode object from all site map node collections that are tracked by the site map provider.

ResolveSiteMapNode(HttpContext)

Genera l'evento SiteMapResolve.Raises the SiteMapResolve event.

(Ereditato da SiteMapProvider)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Ereditato da Object)

Eventi

SiteMapResolve

Si verifica quando viene chiamata la proprietà CurrentNode.Occurs when the CurrentNode property is called.

(Ereditato da SiteMapProvider)

Si applica a

Vedi anche