SiteMapNode.Url プロパティ
アセンブリ: System.Web (system.web.dll 内)

ノードが表すページの URL。既定値は String.Empty です。


ASP.NET の既定のサイト マップ プロバイダ実装である XmlSiteMapProvider クラスは、SiteMapNode.Url プロパティをルックアップ キーとして使用します。したがって、XmlSiteMapProvider クラスによって使用されるすべての SiteMapNode オブジェクトには、プロバイダのスコープ内で重複しない URL が割り当てられている必要があります。

SiteMapNode オブジェクトの Url プロパティを設定する方法を次のコード例に示します。AccessSiteMapProvider は、そのルート ノードを parentnodeid が定義されていない行として格納します。この行は OleDbDataReader オブジェクトを使用して返され、SiteMapNode プロパティがデータ リーダーの値に基づいて設定されます。
このコード例は、SiteMapProvider クラスのトピックで取り上げているコード例の一部分です。
' 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
// 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; } }
// 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 ); } }
// 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

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- SiteMapNode.Url プロパティのページへのリンク