SiteMapNode コンストラクター
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
SiteMapNode クラスの新しいインスタンスを初期化し、そのインスタンスに、指定された SiteMapProvider オブジェクトを関連付けます。
オーバーロード
SiteMapNode(SiteMapProvider, String) |
ノードが示すページを識別する指定された |
SiteMapNode(SiteMapProvider, String, String) |
指定された URL、ノードが示すページを識別する |
SiteMapNode(SiteMapProvider, String, String, String) |
指定された URL、ノードが示すページを識別する |
SiteMapNode(SiteMapProvider, String, String, String, String) |
指定された URL、ノードが示すページを識別する |
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
プロバイダー固有のルックアップ キー。
例外
注釈
ASP.NET の既定SiteMapProviderのプロバイダー実装である クラスはXmlSiteMapProvider、 プロパティを参照キーとして使用SiteMapNode.Urlします (URL が指定されていない場合は、ノードに対して追跡識別子が生成されます)。 したがって、 SiteMapNode URL を提供し、 によって XmlSiteMapProvider 使用されるコントロールには、プロバイダーのスコープ内で一意の 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。
例外
例
次のコード例では、 コンストラクターを 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 が指定されていない場合は、ノードに対して追跡識別子が生成されます)。 したがって、 SiteMapNode URL を提供し、 によって XmlSiteMapProvider 使用されるオブジェクトには、プロバイダーのスコープ内で一意の 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
ナビゲーション コントロールによる表示などに使用されるノードのラベル。
例外
例
次のコード例では、 コンストラクターを使用して クラスの 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 が指定されていない場合は、ノードに対して追跡識別子が生成されます)。 したがって、 SiteMapNode URL を提供し、 によって XmlSiteMapProvider 使用されるオブジェクトには、プロバイダーのスコープ内で一意の 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
ノードが示すページの説明。
例外
例
次のコード例では、コンストラクターを 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 が指定されていない場合は、ノードに対して追跡識別子が生成されます)。 したがって、 SiteMapNode URL を提供し、 によって XmlSiteMapProvider 使用されるオブジェクトには、プロバイダーのスコープ内で一意の URL が必要です。
または が指定されていないtitle
場合、 プロパティdescription
または Description プロパティをTitle呼び出すと、フィールドが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
IList で表されるページを表示できるロールの SiteMapNode。
- attributes
- NameValueCollection
SiteMapNode の初期化に使用する追加属性の NameValueCollection。
- explicitResourceKeys
- NameValueCollection
ローカリゼーションに使用する明示的なリソース キーの NameValueCollection。
- implicitResourceKey
- String
ローカリゼーションに使用する暗黙のリソース キー。
例外
注釈
ASP.NET の既定SiteMapProviderのプロバイダー実装である クラスはXmlSiteMapProvider、 プロパティを参照キーとして使用SiteMapNode.Urlします (URL が指定されていない場合は、ノードに対して追跡識別子が生成されます)。 したがって、 SiteMapNode URL を提供し、 によって XmlSiteMapProvider 使用されるオブジェクトには、プロバイダーのスコープ内で一意の URL が必要です。
NameValueCollectionで作成されるSiteMapNode属性のコレクションは、 プロパティをAttributes通じて使用でき、追加の属性をサイト マップ ノードに適用し、カスタム クラスを派生させずに機能を拡張することが簡単になります。
プロパティが を IList 返したときにノードを表示できるロールのセットを提供するロールのコレクションを SecurityTrimmingEnabled 指定します true
。 詳細については、「SecurityTrimmingEnabled」を参照してください。
プロバイダーは XmlSiteMapProvider 、 プロパティを SiteMapNode.Url 参照キーとして使用します。 したがって、 によって使用されるは、 SiteMapNode プロバイダーの XmlSiteMapProvider スコープ内で一意の URL を持っている必要があります。
または が指定されていないtitle
場合、 プロパティdescription
または Description プロパティをTitle呼び出すと、フィールドがString.Empty返されます。
ローカライズ用のリソースをプログラムで指定するには、 の値を、ノードのimplicitResourceKey
ローカライズされたリソースを識別するために使用される一意の名前に設定するか、ペアのname/value
コレクションにNameValueCollection設定explicitResourceKeys
します。ここでname
、 はローカライズするノード プロパティまたはカスタム属性であり、value
ノード プロパティまたはカスタム属性のローカライズ値を含みます。 ローカライズされた値は、適切な .resx ファイルで設定できます。 、、および オブジェクトのカスタム プロパティをTitleDescriptionローカライズする方法のSiteMapNode詳細については、「方法: Site-Map データをローカライズする」を参照してください。 コレクションの構文要件 explicitResourceKeys
については、「」を参照してください NameValueCollection。
こちらもご覧ください
適用対象
.NET