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
提供者專用的查閱索引鍵。
例外狀況
備註
XmlSiteMapProvider類別是 ASP.NET 的預設 SiteMapProvider 提供者實作,會使用 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。
例外狀況
範例
下列程式碼範例示範如何使用 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
備註
XmlSiteMapProvider類別是 ASP.NET 的預設 SiteMapProvider 提供者實作,會使用 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()
備註
XmlSiteMapProvider類別是 ASP.NET 的預設 SiteMapProvider 提供者實作,會使用 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
備註
XmlSiteMapProvider類別是 ASP.NET 的預設 SiteMapProvider 提供者實作,會使用 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
其他屬性的 NameValueCollection,用來初始化 SiteMapNode。
- explicitResourceKeys
- NameValueCollection
用於當地語系化之明確資源索引鍵的 NameValueCollection。
- implicitResourceKey
- String
用於當地語系化的隱含資源索引鍵。
例外狀況
備註
XmlSiteMapProvider類別是 ASP.NET 的預設 SiteMapProvider 提供者實作,會使用 SiteMapNode.Url 屬性做為查閱索引鍵,如果未提供 URL,則會為節點提供 (,則會為節點產生追蹤識別碼) 。 因此,任何 SiteMapNode 提供 URL 且 由 XmlSiteMapProvider 使用的物件都必須在提供者的範圍內具有唯一的 URL。
NameValueCollection使用 建立的屬性 SiteMapNode 集合可透過 Attributes 屬性取得,並可讓您輕鬆地將其他屬性套用至網站地圖節點,並擴充其功能,而不需衍生自訂類別來執行此動作。
IList提供角色集合,以提供一組可在 屬性傳 true
回 時 SecurityTrimmingEnabled 檢視節點的角色。 如需詳細資訊,請參閱SecurityTrimmingEnabled。
提供者 XmlSiteMapProvider 會 SiteMapNode.Url 使用 屬性做為查閱索引鍵。 因此,所使用的 XmlSiteMapProvider 任何 SiteMapNode URL 都必須在提供者的範圍內具有唯一的 URL。
title
如果未提供 或 ,則呼叫 或 description
Description 屬性會 Title 傳回 String.Empty 欄位。
若要以程式設計方式指定當地語系化的資源,請將 的值 implicitResourceKey
設定為用來識別節點當地語系化資源的唯一 NameValueCollection 名稱,或設定 explicitResourceKeys
為組集合, name/value
其中 name
是要當地語系化的節點屬性或自訂屬性,並 value
包含節點屬性或自訂屬性的當地語系化值。 然後,您可以在適當的 .resx 檔案中設定當地語系化的值。 如需如何將 、 Description 和 物件的任何自訂屬性 SiteMapNode 當地語系化 Title 的詳細資訊,請參閱如何:當地語系化Site-Map資料。 如需集合的 explicitResourceKeys
語法需求,請參閱 NameValueCollection 。