StaticSiteMapProvider クラス/とは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > StaticSiteMapProvider クラス/の意味・解説 

StaticSiteMapProvider クラス

メモ : このクラスは、.NET Framework version 2.0新しく追加されたものです。

SiteMapProvider 抽象クラス部分実装として機能しますまた、ASP.NET既定サイト マップ プロバイダである XmlSiteMapProvider クラス基本クラスとして機能します

名前空間: System.Web
アセンブリ: System.Web (system.web.dll 内)
構文構文

Public MustInherit Class
 StaticSiteMapProvider
    Inherits SiteMapProvider
Dim instance As StaticSiteMapProvider
public abstract class StaticSiteMapProvider
 : SiteMapProvider
public ref class StaticSiteMapProvider abstract
 : public SiteMapProvider
public abstract class StaticSiteMapProvider
 extends SiteMapProvider
public abstract class StaticSiteMapProvider
 extends SiteMapProvider
解説解説

StaticSiteMapProvider は、SiteMapProvider 抽象クラス部分実装で、AddNode メソッドと RemoveNode メソッド2 つ追加メソッド、BuildSiteMap 抽象メソッド、および Clear 保護メソッド提供します

StaticSiteMapProvider クラスは、永続ストレージ格納するサイト マップメモリ格納するサイト マップ変換するサイト マップ プロバイダ作成サポートします (XmlSiteMapProvider など)。StaticSiteMapProvider クラスは、SiteMapNode オブジェクト格納取得使用する基本実装提供します

SiteMapProvider クラスStaticSiteMapProvider クラスは、サイト マップ プロバイダ階層概念サポートします。この概念では、サイト マップ プロバイダは他のサイト マップ プロバイダとの階層関係を持つことができます。このパターンは RootProvider プロパティと ParentProvider プロパティ実装されます

StaticSiteMapProvider クラスは、その SiteMapNode オブジェクトハッシュ テーブル格納しサイト マップ ノードが表すページの SiteMapNode.Url プロパティ内部的にキーとして使用します (サイト マップ ノードURL指定しない場合は、自動生成された一意キー使用して追跡されます)。このためサイト マップ ノードの中で同じ URL を持つサイト マップ ノード複数使用することはできません。たとえば、次のコード例示されているサイト マップ ノード読み込みに、既定ASP.NET サイト マップ プロバイダである XmlSiteMapProvider クラス使用した場合、または StaticSiteMapProvider クラス派生であるサイト マップ プロバイダ使用した場合は、AboutUs.aspx ページ複数使用されているため、失敗します

<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、および BuildSiteMap3 つのメソッドです。Clear メソッドと FindSiteMapNode メソッドには、ほとんどのカスタム サイト マップ プロバイダ実装十分な既定実装用意されています。

Initialize メソッドは、呼び出されると、サイト マップ データ読み込み必要なすべてのリソース含めてサイト マップ プロバイダ初期化しますが、メモリ内でのサイト マップ ノード構築試みません。派生クラスサイト マップ データ保存ファイル使用する場合ファイル初期化はすべてこのメソッド実行できますサイト マップ ノードリレーショナル データベースなどの別の種類データ ストア使用する場合接続初期化がこのメソッド実行されます。構成サイト マップ プロバイダ要素指定されているファイル名接続文字列などの追加属性は、ASP.NET 構成システムによって処理されInitialize メソッドattributes パラメータ使用して渡されます。

BuildSiteMap メソッドは、StaticSiteMapProvider クラスから派生したすべてのクラスによってオーバーライドされる必要があります。このメソッドは、サイト マップ ノード永続ストレージから読み込み、それを内部表現変換するために呼び出されます。BuildSiteMap メソッドは、StaticSiteMapProvider クラスXmlSiteMapProvider クラス数多く既定メンバ実装内部的に呼び出されます。独自のサイト マップ プロバイダ実装する場合は、サイト マップ データの処理1 度限定しサイト マップ情報読み込み済み場合は、それ以降BuildSiteMap メソッド呼び出して制御がすぐに戻るようにしてくださいページ同時に複数要求されると、サイト マップ情報読み込み間接的に複数呼び出されることになるため、BuildSiteMap メソッド実装する場合は、スレッド セーフであることを確認してくださいサイト マップ インフラストラクチャは、ユーザーロール基づいたサイト マップ情報表示サポートします個々SiteMapNode オブジェクトサポートする Roles プロパティに応じてユーザーごとにナビゲーション構造変えることができますStaticSiteMapProvider クラスサイト マップ ノード取得メンバ既定実装は、IsAccessibleToUser メソッド呼び出してセキュリティ トリミング自動的に実行します

AddNode, Clear メソッドRemoveNode メソッドは、サイト マップ ノードスレッド セーフ方法追跡するために使用する内部コレクション操作します。

継承時の注意 StaticSiteMapProvider クラスから継承する場合は、BuildSiteMapメンバオーバーライドする必要があります

使用例使用例

StaticSiteMapProvider クラス拡張して Microsoft Accessサイト マップ プロバイダとして使用する方法次のコード例示しますAccessSiteMapProvider クラスは、深さレベル 1シンプルな階層サポートするサイト マップ プロバイダです。サイト マップ データ格納テーブル構造次のとおりです。

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

AccessSiteMapProvider クラスStaticSiteMapProvider クラス派生クラスで、SQL クエリ、OleDbCommand オブジェクト、および OleDbDataReader オブジェクト使用してMicrosoft Access データベースから情報取得します

Imports System
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 'New

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

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

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

End Namespace
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;
            }
        }
    }
}
#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 );
      }

   }

};

package Samples.AspNet.JSL;
import System.*;
import System.Collections.*;
import System.Collections.Specialized.*;
import System.Data.*;
import System.Data.OleDb.*;
import System.Web.*;
import System.Configuration.*;

/// An extremely simple AccessSiteMapProvider that only supports a
/// site map node hierarchy 1 level deep.
public class AccessSiteMapProvider extends
 StaticSiteMapProvider
{
    private SiteMapNode rootNode = null;
    private OleDbConnection accessConnection = null;

    // This string is case sensitive.
    public String accessConnectionStringName = "accessSiteMapConnectionString";

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

    // Some basic state to help track the initialization state of the
 provider.
    private boolean initialized = false;

    /** @property 
     */
    public boolean get_IsInitialized()
    {
        return initialized;
    } //get_IsInitized.

    // Return the root node of the current site map.
    /** @property 
     */
    public SiteMapNode get_RootNode() throws Exception
    {
        SiteMapNode temp = null;
        temp = BuildSiteMap();
        return temp;
    } //get_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 void Initialize(String name, NameValueCollection
 attributes) 
        throws Exception
    {
        if (get_IsInitialized())
        {
            return;
        }

        super.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.get_Item(
            accessConnectionStringName);

        if (null == connectionString || connectionString.get_Length()
 == 0)
        {
            throw new Exception("The connection string
 was not found.");
        }
        else
        {
            accessConnection = new OleDbConnection(connectionString);
        }
        initialized = true;
    } //Initialize

    ///
    /// 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 void Clear()
    {
        synchronized (this)
        {
            rootNode = null;
            super.Clear();
        }
    } //Clear

    // Build an in-memory representation from persistent
    // storage, and return the root node of the site map.
    public SiteMapNode BuildSiteMap() throws Exception
    {
        // Since the SiteMap class is static, make sure that it is
        // not modified while the site map is built.
        synchronized (this)
        {
            // If there is no initialization, this method is being
            // called out of order.
            if (!get_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.get_State().Equals(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.get_HasRows())
                {
                    rootNodeReader.Read();
                    rootNodeId = rootNodeReader.GetInt32(0);
                    // Create a SiteMapNode that references the current
 
                    // StaticSiteMapProvider.
                    rootNode = new SiteMapNode(this
,
                        ((Int32)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.set_Value((Int32)rootNodeId);
                childNodesCommand.get_Parameters().Add(rootParam);

                OleDbDataReader childNodesReader = childNodesCommand.
                    ExecuteReader();

                if (childNodesReader.get_HasRows())
                {
                    SiteMapNode childNode = null;
                    while (childNodesReader.Read())
                    {
                        childNode = new SiteMapNode(this
,
                            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;
        }
    } //BuildSiteMap

    protected SiteMapNode GetRootNodeCore()
    {
        return null;
    } //GetRootNodeCore
} //AccessSiteMapProvider 

最後にAccessSiteMapProvider は、次の Web.config ファイル既定プロバイダとして構成されます。

<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>
.NET Framework のセキュリティ.NET Frameworkセキュリティ
継承階層継承階層
System.Object
   System.Configuration.Provider.ProviderBase
     System.Web.SiteMapProvider
      System.Web.StaticSiteMapProvider
         System.Web.XmlSiteMapProvider
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「StaticSiteMapProvider クラス/」の関連用語

StaticSiteMapProvider クラス/のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



StaticSiteMapProvider クラス/のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2024 Microsoft.All rights reserved.

©2024 GRAS Group, Inc.RSS