次の方法で共有


SiteMapNode コンストラクター

定義

SiteMapNode クラスの新しいインスタンスを初期化し、指定したSiteMapProvider オブジェクトに関連付けます。

オーバーロード

名前 説明
SiteMapNode(SiteMapProvider, String)

指定したkeyを使用して、ノードが表すページとノードを管理するサイト マップ プロバイダーを識別して、SiteMapNode クラスの新しいインスタンスを初期化します。

SiteMapNode(SiteMapProvider, String, String)

指定した URL、ノードが表すページを識別するkey、およびノードを管理するサイト マップ プロバイダーを使用して、SiteMapNode クラスの新しいインスタンスを初期化します。

SiteMapNode(SiteMapProvider, String, String, String)

指定した URL、ノードが表すページを識別するkey、タイトル、およびノードを管理するサイト マップ プロバイダーを使用して、SiteMapNode クラスの新しいインスタンスを初期化します。

SiteMapNode(SiteMapProvider, String, String, String, String)

指定した URL、ノードが表すページを識別するkey、タイトルと説明、およびノードを管理するサイト マップ プロバイダーを使用して、SiteMapNode クラスの新しいインスタンスを初期化します。

SiteMapNode(SiteMapProvider, String, String, String, String, IList, NameValueCollection, NameValueCollection, String)

ローカライズ用のノード、URL、タイトル、説明、ロール、追加の属性、および明示的および暗黙的なリソース キーを管理する、指定したサイト マップ プロバイダーを使用して、 SiteMapNode クラスの新しいインスタンスを初期化します。

SiteMapNode(SiteMapProvider, String)

指定したkeyを使用して、ノードが表すページとノードを管理するサイト マップ プロバイダーを識別して、SiteMapNode クラスの新しいインスタンスを初期化します。

public:
 SiteMapNode(System::Web::SiteMapProvider ^ provider, System::String ^ key);
public SiteMapNode(System.Web.SiteMapProvider provider, string key);
new System.Web.SiteMapNode : System.Web.SiteMapProvider * string -> System.Web.SiteMapNode
Public Sub New (provider As SiteMapProvider, key As String)

パラメーター

provider
SiteMapProvider

ノードが関連付けられている SiteMapProvider

key
String

プロバイダー固有の参照キー。

例外

SiteMapProvidernullです。

-又は-

keynullです。

注釈

ASP.NET の既定のSiteMapProvider プロバイダー実装である XmlSiteMapProvider クラスは、SiteMapNode.Url プロパティを参照キーとして使用します (URL が指定されていない場合、ノードの追跡識別子が生成されます)。 そのため、URL を提供し、XmlSiteMapProviderによって使用されるSiteMapNode コントロールには、プロバイダーのスコープ内で一意の URL が必要です。

適用対象

SiteMapNode(SiteMapProvider, String, String)

指定した URL、ノードが表すページを識別するkey、およびノードを管理するサイト マップ プロバイダーを使用して、SiteMapNode クラスの新しいインスタンスを初期化します。

public:
 SiteMapNode(System::Web::SiteMapProvider ^ provider, System::String ^ key, System::String ^ url);
public SiteMapNode(System.Web.SiteMapProvider provider, string key, string url);
new System.Web.SiteMapNode : System.Web.SiteMapProvider * string * string -> System.Web.SiteMapNode
Public Sub New (provider As SiteMapProvider, key As String, url As String)

パラメーター

provider
SiteMapProvider

ノードが関連付けられている SiteMapProvider

key
String

プロバイダー固有の参照キー。

url
String

ノードがサイト内で表すページの URL。

例外

SiteMapProvidernullです。

-又は-

keynullです。

次のコード例では、 SiteMapNodeCollection コンストラクターを使用して新しい SiteMapNodeCollection コレクションを作成し、 Add メソッドを使用してそれに要素を追加する方法を示します。

// The LoadSiteMapData() method loads site navigation
// data from persistent storage into a DataTable.
DataTable siteMap = LoadSiteMapData();

// Create a SiteMapNodeCollection.
SiteMapNodeCollection nodes = new SiteMapNodeCollection();

// Create a SiteMapNode and add it to the collection.
SiteMapNode tempNode;
DataRow row;
int index = 0;

while (index < siteMap.Rows.Count)
{

    row = siteMap.Rows[index];

    // Create a node based on the data in the DataRow.
    tempNode = new SiteMapNode(SiteMap.Provider,
                                row["Key"].ToString(),
                                row["Url"].ToString());

    // Add the node to the collection.
    nodes.Add(tempNode);
    ++index;
}
' The LoadSiteMapData() Function loads site navigation
' data from persistent storage into a DataTable.

Dim siteMapData As DataTable
siteMapData = LoadSiteMapData()

' Create a SiteMapNodeCollection.
Dim nodes As New SiteMapNodeCollection()

' Create a SiteMapNode and add it to the collection.
Dim tempNode As SiteMapNode
Dim row As DataRow
Dim index As Integer
index = 0

While (index < siteMapData.Rows.Count)

    row = siteMapData.Rows(index)

    ' Create a node based on the data in the DataRow.
    tempNode = New SiteMapNode(SiteMap.Provider, row("Key").ToString(), row("Url").ToString())

    ' Add the node to the collection.
    nodes.Add(tempNode)
    index = index + 1
End While

注釈

ASP.NET の既定のSiteMapProvider プロバイダー実装である XmlSiteMapProvider クラスは、SiteMapNode.Url プロパティを参照キーとして使用します (URL が指定されていない場合、ノードの追跡識別子が生成されます)。 そのため、URL を提供し、XmlSiteMapProviderによって使用されるSiteMapNode オブジェクトには、プロバイダーのスコープ内で一意の URL が必要です。

適用対象

SiteMapNode(SiteMapProvider, String, String, String)

指定した URL、ノードが表すページを識別するkey、タイトル、およびノードを管理するサイト マップ プロバイダーを使用して、SiteMapNode クラスの新しいインスタンスを初期化します。

public:
 SiteMapNode(System::Web::SiteMapProvider ^ provider, System::String ^ key, System::String ^ url, System::String ^ title);
public SiteMapNode(System.Web.SiteMapProvider provider, string key, string url, string title);
new System.Web.SiteMapNode : System.Web.SiteMapProvider * string * string * string -> System.Web.SiteMapNode
Public Sub New (provider As SiteMapProvider, key As String, url As String, title As String)

パラメーター

provider
SiteMapProvider

ノードが関連付けられている SiteMapProvider

key
String

プロバイダー固有の参照キー。

url
String

ノードがサイト内で表すページの URL。

title
String

多くの場合、ナビゲーション コントロールによって表示されるノードのラベル。

例外

SiteMapProvidernullです。

-又は-

keynullです。

次のコード例では、 SiteMapNode コンストラクターを使用して、 SiteMapNode クラスの新しいインスタンスを作成する方法を示します。 ノードは、Microsoft Access データベース行の値で初期化されます。

このコード例は、 BuildSiteMap メソッドで提供されるより大きな例の一部です。

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();

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();
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()

注釈

ASP.NET の既定のSiteMapProvider プロバイダー実装である XmlSiteMapProvider クラスは、SiteMapNode.Url プロパティを参照キーとして使用します (URL が指定されていない場合、ノードの追跡識別子が生成されます)。 そのため、URL を提供し、XmlSiteMapProviderによって使用されるSiteMapNode オブジェクトには、プロバイダーのスコープ内で一意の URL が必要です。

titleが指定されていない場合、Title プロパティを呼び出すと、String.Empty フィールドが返されます。

適用対象

SiteMapNode(SiteMapProvider, String, String, String, String)

指定した URL、ノードが表すページを識別するkey、タイトルと説明、およびノードを管理するサイト マップ プロバイダーを使用して、SiteMapNode クラスの新しいインスタンスを初期化します。

public:
 SiteMapNode(System::Web::SiteMapProvider ^ provider, System::String ^ key, System::String ^ url, System::String ^ title, System::String ^ description);
public SiteMapNode(System.Web.SiteMapProvider provider, string key, string url, string title, string description);
new System.Web.SiteMapNode : System.Web.SiteMapProvider * string * string * string * string -> System.Web.SiteMapNode
Public Sub New (provider As SiteMapProvider, key As String, url As String, title As String, description As String)

パラメーター

provider
SiteMapProvider

ノードが関連付けられている SiteMapProvider

key
String

プロバイダー固有の参照キー。

url
String

ノードがサイト内で表すページの URL。

title
String

多くの場合、ナビゲーション コントロールによって表示されるノードのラベル。

description
String

ノードが表すページの説明。

例外

SiteMapProvidernullです。

-又は-

keynullです。

次のコード例では、 SiteMapNode コンストラクターを使用して、単純なテキスト ファイルからデータを解析してメモリ内にサイト マップを構築することで、 SiteMapNode オブジェクトを作成する方法を示します。

このコード例は、抽象 SiteMapProvider クラスに対して提供されるより大きな例の一部です。

protected virtual void LoadSiteMapFromStore()
{
  string pathToOpen;

  lock (this)
  {
    // If a root node exists, LoadSiteMapFromStore has already
    // been called, and the method can return.
    if (rootNode != null)
    {
      return;
    }
    else
    {
      pathToOpen = HttpContext.Current.Server.MapPath("~" + "\\" + sourceFilename);

      if (File.Exists(pathToOpen))
      {
        // Open the file to read from.
        using (StreamReader sr = File.OpenText(pathToOpen))
        {

          // Clear the state of the collections and rootNode
          rootNode = null;
          siteMapNodes.Clear();
          childParentRelationship.Clear();

          // Parse the file and build the site map
          string s = "";
          string[] nodeValues = null;
          SiteMapNode temp = null;

          while ((s = sr.ReadLine()) != null)
          {

            // Build the various SiteMapNode objects and add
            // them to the ArrayList collections. The format used
            // is: URL,TITLE,DESCRIPTION,PARENTURL

            nodeValues = s.Split(',');

            temp = new SiteMapNode(this,
                HttpRuntime.AppDomainAppVirtualPath + "/" + nodeValues[0],
                HttpRuntime.AppDomainAppVirtualPath + "/" + nodeValues[0],
                nodeValues[1],
                nodeValues[2]);

            // Is this a root node yet?
            if (null == rootNode &&
                string.IsNullOrEmpty(nodeValues[3]))
            {
              rootNode = temp;
            }

          // If not the root node, add the node to the various collections.
            else
            {
              siteMapNodes.Add(new DictionaryEntry(temp.Url, temp));
              // The parent node has already been added to the collection.
              SiteMapNode parentNode =
                       FindSiteMapNode(HttpRuntime.AppDomainAppVirtualPath + "/" + nodeValues[3]);
              if (parentNode != null)
              {
                childParentRelationship.Add(new DictionaryEntry(temp.Url, parentNode));
              }
              else
              {
                throw new Exception("Parent node not found for current node.");
              }
            }
          }
        }
      }
      else
      {
        throw new Exception("File not found");
      }
    }
  }
  return;
}
  Protected Overridable Sub LoadSiteMapFromStore()
    Dim pathToOpen As String
    SyncLock Me
      ' If a root node exists, LoadSiteMapFromStore has already
      ' been called, and the method can return.
      If Not (aRootNode Is Nothing) Then
        Return
      Else
        pathToOpen = HttpContext.Current.Server.MapPath("~" & "\\" & sourceFilename)
        If File.Exists(pathToOpen) Then
          ' Open the file to read from.
          Dim sr As StreamReader = File.OpenText(pathToOpen)
          Try

            ' Clear the state of the collections and aRootNode
            aRootNode = Nothing
            siteMapNodes.Clear()
            childParentRelationship.Clear()

            ' Parse the file and build the site map
            Dim s As String = ""
            Dim nodeValues As String() = Nothing
            Dim temp As SiteMapNode = Nothing

            Do
              s = sr.ReadLine()

              If Not s Is Nothing Then
                ' Build the various SiteMapNode objects and add
                ' them to the ArrayList collections. The format used
                ' is: URL,TITLE,DESCRIPTION,PARENTURL
                nodeValues = s.Split(","c)

                temp = New SiteMapNode(Me, _
                    HttpRuntime.AppDomainAppVirtualPath & "/" & nodeValues(0), _
                    HttpRuntime.AppDomainAppVirtualPath & "/" & nodeValues(0), _
                    nodeValues(1), _
                    nodeValues(2))

                ' Is this a root node yet?
                If aRootNode Is Nothing AndAlso _
                  (nodeValues(3) Is Nothing OrElse _
                   nodeValues(3) = String.Empty) Then
                  aRootNode = temp

                  ' If not the root node, add the node to the various collections.
                Else

                  siteMapNodes.Add(New DictionaryEntry(temp.Url, temp))

                  ' The parent node has already been added to the collection.
                  Dim parentNode As SiteMapNode = _
                      FindSiteMapNode(HttpRuntime.AppDomainAppVirtualPath & "/" & nodeValues(3))

                  If Not (parentNode Is Nothing) Then
                    childParentRelationship.Add(New DictionaryEntry(temp.Url, parentNode))
                  Else
                    Throw New Exception("Parent node not found for current node.")
                  End If
                End If
              End If
            Loop Until s Is Nothing
          Finally
            sr.Close()
          End Try
        Else
          Throw New Exception("File not found")
        End If
      End If
    End SyncLock
    Return
  End Sub
End Class

注釈

ASP.NET の既定のSiteMapProvider プロバイダー実装である XmlSiteMapProvider クラスは、SiteMapNode.Url プロパティを参照キーとして使用します (URL が指定されていない場合、ノードの追跡識別子が生成されます)。 そのため、URL を提供し、XmlSiteMapProviderによって使用されるSiteMapNode オブジェクトには、プロバイダーのスコープ内で一意の URL が必要です。

titleまたはdescriptionが指定されていない場合は、TitleまたはDescriptionプロパティを呼び出すと、String.Empty フィールドが返されます。

こちらもご覧ください

適用対象

SiteMapNode(SiteMapProvider, String, String, String, String, IList, NameValueCollection, NameValueCollection, String)

ローカライズ用のノード、URL、タイトル、説明、ロール、追加の属性、および明示的および暗黙的なリソース キーを管理する、指定したサイト マップ プロバイダーを使用して、 SiteMapNode クラスの新しいインスタンスを初期化します。

public:
 SiteMapNode(System::Web::SiteMapProvider ^ provider, System::String ^ key, System::String ^ url, System::String ^ title, System::String ^ description, System::Collections::IList ^ roles, System::Collections::Specialized::NameValueCollection ^ attributes, System::Collections::Specialized::NameValueCollection ^ explicitResourceKeys, System::String ^ implicitResourceKey);
public SiteMapNode(System.Web.SiteMapProvider provider, string key, string url, string title, string description, System.Collections.IList roles, System.Collections.Specialized.NameValueCollection attributes, System.Collections.Specialized.NameValueCollection explicitResourceKeys, string implicitResourceKey);
new System.Web.SiteMapNode : System.Web.SiteMapProvider * string * string * string * string * System.Collections.IList * System.Collections.Specialized.NameValueCollection * System.Collections.Specialized.NameValueCollection * string -> System.Web.SiteMapNode
Public Sub New (provider As SiteMapProvider, key As String, url As String, title As String, description As String, roles As IList, attributes As NameValueCollection, explicitResourceKeys As NameValueCollection, implicitResourceKey As String)

パラメーター

provider
SiteMapProvider

ノードが関連付けられている SiteMapProvider

key
String

プロバイダー固有の参照キー。

url
String

ノードがサイト内で表すページの URL。

title
String

多くの場合、ナビゲーション コントロールによって表示されるノードのラベル。

description
String

ノードが表すページの説明。

roles
IList

SiteMapNodeによって表されるページを表示できるロールのIList

attributes
NameValueCollection

SiteMapNodeの初期化に使用される追加の属性のNameValueCollection

explicitResourceKeys
NameValueCollection

ローカライズに使用される明示的なリソース キーの NameValueCollection

implicitResourceKey
String

ローカライズに使用される暗黙的なリソース キー。

例外

SiteMapProvidernullです。

-又は-

keynullです。

注釈

ASP.NET の既定のSiteMapProvider プロバイダー実装である XmlSiteMapProvider クラスは、SiteMapNode.Url プロパティを参照キーとして使用します (URL が指定されていない場合、ノードの追跡識別子が生成されます)。 そのため、URL を提供し、XmlSiteMapProviderによって使用されるSiteMapNode オブジェクトには、プロバイダーのスコープ内で一意の URL が必要です。

SiteMapNodeが作成される属性のNameValueCollection コレクションは、Attributes プロパティを使用して使用できます。これにより、サイト マップ ノードに追加の属性を簡単に適用し、カスタム クラスを派生させずにその機能を拡張できます。

SecurityTrimmingEnabled プロパティがtrueを返したときにノードを表示できるロールのセットを提供するロールのIListコレクションを指定します。 詳細については、SecurityTrimmingEnabledを参照してください。

XmlSiteMapProvider プロバイダーは、SiteMapNode.Url プロパティを参照キーとして使用します。 そのため、XmlSiteMapProviderで使用されるSiteMapNodeには、プロバイダーのスコープ内で一意の URL が必要です。

titleまたはdescriptionが指定されていない場合は、TitleまたはDescriptionプロパティを呼び出すと、String.Empty フィールドが返されます。

ローカライズ用のリソースをプログラムで指定するには、implicitResourceKeyの値をノードのローカライズされたリソースを識別するために使用される一意の名前に設定するか、explicitResourceKeysname/valueペアのNameValueCollection コレクションに設定します。nameは、ローカライズするノード プロパティまたはカスタム属性であり、ノード プロパティまたはカスタム属性のローカライズ値が含まれるvalue。 ローカライズされた値は、適切な .resx ファイルで設定できます。 SiteMapNode オブジェクトのTitleDescription、およびカスタム プロパティをローカライズする方法の詳細については、「方法: Site-Map データをローカライズする」を参照してください。 explicitResourceKeys コレクションの構文要件については、NameValueCollectionを参照してください。

こちらもご覧ください

適用対象