Поделиться через


SiteMapNode Конструкторы

Определение

Инициализирует новый экземпляр SiteMapNode класса и связывает его с указанным SiteMapProvider объектом.

Перегрузки

Имя Описание
SiteMapNode(SiteMapProvider, String)

Инициализирует новый экземпляр SiteMapNode класса, используя указанный key для идентификации страницы, представляющей узел, и поставщика карты сайта, который управляет узлом.

SiteMapNode(SiteMapProvider, String, String)

Инициализирует новый экземпляр класса с помощью указанного SiteMapNode URL-адреса, key чтобы определить страницу, представляющую узел, и поставщик карты сайта, который управляет узлом.

SiteMapNode(SiteMapProvider, String, String, String)

Инициализирует новый экземпляр класса с помощью указанного SiteMapNode URL-адреса, key чтобы определить страницу, представляющую узел, название и поставщик карты сайта, который управляет узлом.

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

Инициализирует новый экземпляр класса с помощью указанного SiteMapNode URL-адреса, key для идентификации страницы, представляющей узел, название и описание, а также поставщик карты сайта, который управляет узлом.

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

Инициализирует новый экземпляр класса с помощью указанного SiteMapNode поставщика карты сайта, который управляет узлом, URL-адресом, заголовком, описанием, ролями, дополнительными атрибутами и явными и неявными ключами ресурсов для локализации.

SiteMapNode(SiteMapProvider, String)

Инициализирует новый экземпляр SiteMapNode класса, используя указанный key для идентификации страницы, представляющей узел, и поставщика карты сайта, который управляет узлом.

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

Ключ подстановки для конкретного поставщика.

Исключения

SiteMapProvider равно null.

–или–

key равно null.

Комментарии

Класс XmlSiteMapProvider , который является реализацией поставщика по умолчанию SiteMapProvider для ASP.NET, использует SiteMapNode.Url свойство в качестве ключа подстановки, если он указан для узла (если URL-адрес не указан, идентификатор отслеживания создается для узла). Таким образом, любой SiteMapNode элемент управления, предоставляющий URL-адрес и используемый XmlSiteMapProvider поставщиком, должен иметь уникальный URL-адрес.

Применяется к

SiteMapNode(SiteMapProvider, String, String)

Инициализирует новый экземпляр класса с помощью указанного SiteMapNode URL-адреса, key чтобы определить страницу, представляющую узел, и поставщик карты сайта, который управляет узлом.

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-адрес страницы, представляющей узел на сайте.

Исключения

SiteMapProvider равно null.

–или–

key равно null.

Примеры

В следующем примере кода показано, как использовать 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 , который является реализацией поставщика по умолчанию SiteMapProvider для ASP.NET, использует SiteMapNode.Url свойство в качестве ключа подстановки, если он указан для узла (если URL-адрес не указан, идентификатор отслеживания создается для узла). Поэтому любой SiteMapNode объект, предоставляющий URL-адрес и используемый XmlSiteMapProvider поставщиком, должен иметь уникальный URL-адрес в пределах области поставщика.

Применяется к

SiteMapNode(SiteMapProvider, String, String, String)

Инициализирует новый экземпляр класса с помощью указанного SiteMapNode URL-адреса, key чтобы определить страницу, представляющую узел, название и поставщик карты сайта, который управляет узлом.

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

Метка узла, часто отображаемая элементами управления навигацией.

Исключения

SiteMapProvider равно null.

–или–

key равно null.

Примеры

В следующем примере кода показано, как использовать 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 , который является реализацией поставщика по умолчанию SiteMapProvider для ASP.NET, использует SiteMapNode.Url свойство в качестве ключа подстановки, если он указан для узла (если URL-адрес не указан, идентификатор отслеживания создается для узла). Поэтому любой SiteMapNode объект, предоставляющий URL-адрес и используемый XmlSiteMapProvider поставщиком, должен иметь уникальный URL-адрес в пределах области поставщика.

Если не title указано, вызовы Title свойства возвращают String.Empty поле.

Применяется к

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

Инициализирует новый экземпляр класса с помощью указанного SiteMapNode URL-адреса, key для идентификации страницы, представляющей узел, название и описание, а также поставщик карты сайта, который управляет узлом.

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

Описание страницы, представляющей узел.

Исключения

SiteMapProvider равно null.

–или–

key равно null.

Примеры

В следующем примере кода показано, как использовать 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 , который является реализацией поставщика по умолчанию SiteMapProvider для ASP.NET, использует SiteMapNode.Url свойство в качестве ключа подстановки, если он указан для узла (если URL-адрес не указан, идентификатор отслеживания создается для узла). Поэтому любой SiteMapNode объект, предоставляющий URL-адрес и используемый XmlSiteMapProvider поставщиком, должен иметь уникальный URL-адрес в пределах области поставщика.

Если нет или description нетtitle, вызовы Title к полю String.Empty или Description свойства возвращают поле.

См. также раздел

Применяется к

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

Инициализирует новый экземпляр класса с помощью указанного SiteMapNode поставщика карты сайта, который управляет узлом, URL-адресом, заголовком, описанием, ролями, дополнительными атрибутами и явными и неявными ключами ресурсов для локализации.

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

Неявный ключ ресурса, используемый для локализации.

Исключения

SiteMapProvider равно null.

–или–

key равно null.

Комментарии

Класс XmlSiteMapProvider , который является реализацией поставщика по умолчанию SiteMapProvider для ASP.NET, использует SiteMapNode.Url свойство в качестве ключа подстановки, если он указан для узла (если URL-адрес не указан, идентификатор отслеживания создается для узла). Поэтому любой SiteMapNode объект, предоставляющий URL-адрес и используемый XmlSiteMapProvider поставщиком, должен иметь уникальный URL-адрес в пределах области поставщика.

Коллекция NameValueCollection атрибутов, SiteMapNode созданных с помощью свойства, доступна с помощью Attributes свойства и упрощает применение дополнительных атрибутов к узлу карты сайта и расширение возможностей, не создавая настраиваемый класс для этого.

IList Укажите коллекцию ролей, чтобы предоставить набор ролей, которые могут просматривать узел при возврате SecurityTrimmingEnabledtrueсвойства. Дополнительные сведения см. в разделе SecurityTrimmingEnabled.

Поставщик XmlSiteMapProvider использует SiteMapNode.Url свойство в качестве ключа подстановки. Таким образом, любой SiteMapNode , который используется XmlSiteMapProvider поставщиком, должен иметь уникальный URL-адрес в пределах области поставщика.

Если нет или description нетtitle, вызовы Title к полю String.Empty или Description свойства возвращают поле.

Чтобы программно указать ресурсы для локализации, задайте значение уникального implicitResourceKey имени, которое будет использоваться для идентификации локализованных ресурсов узла или набора explicitResourceKeysname/valueNameValueCollection пар, где name является свойство узла или настраиваемый атрибут для локализации и value содержит значения локализации для свойства узла или пользовательского атрибута. Затем локализованные значения можно задать в соответствующих RESX-файлах. Дополнительные сведения о локализации TitleDescriptionобъекта и любых пользовательских SiteMapNode свойств объекта см. в статье "Локализация Site-Map данных". Требования к синтаксису explicitResourceKeys коллекции см. в разделе NameValueCollection.

См. также раздел

Применяется к