共用方式為


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

備註

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。

例外狀況

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

備註

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

節點的標籤,通常由巡覽控制項顯示。

例外狀況

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

備註

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

節點所表示之網頁的描述。

例外狀況

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

備註

XmlSiteMapProvider類別是 ASP.NET 的預設 SiteMapProvider 提供者實作,會使用 SiteMapNode.Url 屬性做為查閱索引鍵,如果未提供 URL,則會為節點提供 (,則會為節點產生追蹤識別碼) 。 因此,任何 SiteMapNode 提供 URL 且 由 XmlSiteMapProvider 使用的物件都必須在提供者的範圍內具有唯一的 URL。

title如果未提供 或 ,則呼叫 或 descriptionDescription 屬性會 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

用於當地語系化的隱含資源索引鍵。

例外狀況

SiteMapProvidernull

-或-

keynull

備註

XmlSiteMapProvider類別是 ASP.NET 的預設 SiteMapProvider 提供者實作,會使用 SiteMapNode.Url 屬性做為查閱索引鍵,如果未提供 URL,則會為節點提供 (,則會為節點產生追蹤識別碼) 。 因此,任何 SiteMapNode 提供 URL 且 由 XmlSiteMapProvider 使用的物件都必須在提供者的範圍內具有唯一的 URL。

NameValueCollection使用 建立的屬性 SiteMapNode 集合可透過 Attributes 屬性取得,並可讓您輕鬆地將其他屬性套用至網站地圖節點,並擴充其功能,而不需衍生自訂類別來執行此動作。

IList提供角色集合,以提供一組可在 屬性傳 true 回 時 SecurityTrimmingEnabled 檢視節點的角色。 如需詳細資訊,請參閱SecurityTrimmingEnabled

提供者 XmlSiteMapProviderSiteMapNode.Url 使用 屬性做為查閱索引鍵。 因此,所使用的 XmlSiteMapProvider 任何 SiteMapNode URL 都必須在提供者的範圍內具有唯一的 URL。

title如果未提供 或 ,則呼叫 或 descriptionDescription 屬性會 Title 傳回 String.Empty 欄位。

若要以程式設計方式指定當地語系化的資源,請將 的值 implicitResourceKey 設定為用來識別節點當地語系化資源的唯一 NameValueCollection 名稱,或設定 explicitResourceKeys 為組集合, name/value 其中 name 是要當地語系化的節點屬性或自訂屬性,並 value 包含節點屬性或自訂屬性的當地語系化值。 然後,您可以在適當的 .resx 檔案中設定當地語系化的值。 如需如何將 、 Description 和 物件的任何自訂屬性 SiteMapNode 當地語系化 Title 的詳細資訊,請參閱如何:當地語系化Site-Map資料。 如需集合的 explicitResourceKeys 語法需求,請參閱 NameValueCollection

另請參閱

適用於