SiteMapNode SiteMapNode SiteMapNode SiteMapNode Class

Определение

Представляет узел в иерархической структуре карты веб-узла, например, описываемой классом SiteMap и классами, которые реализуют абстрактный класс SiteMapProvider.Represents a node in the hierarchical site map structure such as that described by the SiteMap class and classes that implement the abstract SiteMapProvider class.

public ref class SiteMapNode : ICloneable, System::Web::UI::IHierarchyData, System::Web::UI::INavigateUIData
public class SiteMapNode : ICloneable, System.Web.UI.IHierarchyData, System.Web.UI.INavigateUIData
type SiteMapNode = class
    interface ICloneable
    interface IHierarchyData
    interface INavigateUIData
Public Class SiteMapNode
Implements ICloneable, IHierarchyData, INavigateUIData
Наследование
SiteMapNodeSiteMapNodeSiteMapNodeSiteMapNode
Реализации

Примеры

Этот раздел содержит два примера кода.This section contains two code examples. В первом примере кода показано, как создать новую коллекцию узлов карт узла и добавить в нее элементы.The first code example demonstrates how to create a new site map node collection and add elements to it. Во втором примере кода показано, как загружать данные карт веб-узла из текстового файла.The second code example demonstrates how to load site map data from a text file.

В следующем примере кода показано, как использовать SiteMapNodeCollection конструктор для создания новой SiteMapNodeCollection коллекции, а затем добавлять в него Add элементы с помощью метода.The following code example demonstrates how to use the SiteMapNodeCollection constructor to create a new SiteMapNodeCollection collection, and then add elements to it with the Add method.

// 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

В следующем примере кода показано, SimpleTextSiteMapProvider как метод выполняет синтаксический анализ текстового файла, содержащего данные схемы узла, в строках с разделителями-запятыми.The following code example demonstrates how the SimpleTextSiteMapProvider parses a text file that contains site map data in comma-delimited strings. Новый SiteMapNode объект добавляется к внутренним коллекциям отслеживания класса для каждой строки, считанной из файла.A new SiteMapNode object is added to the internal tracking collections of the class for each line that is read from the file.

Этот пример кода является частью большого примера, SiteMapProvider приведенного для класса.This code example is part of a larger example provided for the SiteMapProvider class.

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 'LoadSiteMapFromStore
End Class 'SimpleTextSiteMapProvider

Комментарии

SiteMapNode Объект представляет страницу веб-сайта в структуре схемы узла.A SiteMapNode object represents a Web site page in a site map structure. SiteMapNodeобъекты загружаются статическим SiteMap классом во время выполнения с помощью одного или нескольких поставщиков карт веб-сайтов для загрузки данных карт веб-узла из постоянного хранилища в память.SiteMapNode objects are loaded by the static SiteMap class at run time using one or more site map providers to load site map data from persistent storage into memory. SiteMapNodeобъекты упаковываются SiteMapNodeItem классом для использования серверными веб-элементами управления, такими SiteMapPath как элемент управления.SiteMapNode objects are wrapped by the SiteMapNodeItem class for use by Web server controls, such as the SiteMapPath control.

Класс включает несколько свойств, которые используются для описания одной страницы на веб-сайте, включая свойства, описывающие страницу, например Urlсвойства, Titleи Description. SiteMapNodeThe SiteMapNode class includes several properties that are used to describe a single page in a Web site, including properties that describe a page, such as the Url, Title, and Description properties. В то время как XmlSiteMapProvider SiteMapNode Key свойство используется классом, который является поставщиком схемы узла по умолчанию для ASP.NET, в качестве ключа поиска во внутренних коллекциях, используемых поставщиком для наблюдения за узлами, класс поддерживает базовый элемент Url свойство, которое может использоваться поставщиками карт сайта для мониторинга узлов.Whereas the Url property is used by the XmlSiteMapProvider class, which is the default site map provider for ASP.NET, as a lookup key in the internal collections that the provider uses to track nodes, the SiteMapNode class supports a basic Key property that can be used by site map providers to track nodes. Кроме того, Url свойство используется элементами управления навигацией для отрисовки гиперссылок на страницы в структуре навигации.Additionally, the Url property is used by navigation controls to render hyperlinks to pages within a navigation structure. Свойство является понятным именем SiteMapNodeдля, часто такое же, как заголовок HTML веб-формы, и используется элементами управления навигацией для отображения простых меток. TitleThe Title property is a friendly name for the SiteMapNode, is often the same as the HTML title of a Web Form, and is used by navigation controls to render simple labels. Наконец, NameValueCollection Коллекция дополнительных Attributes атрибутов доступна для поставщиков карт узла, использующих SiteMapNode объекты, но для которых требуются дополнительные свойства, недоступные в базовом SiteMapNode классе.Finally, a NameValueCollection collection of additional Attributes attributes is available to site map providers that use SiteMapNode objects, but require additional properties that are not available in the base SiteMapNode class.

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

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

Выполняет инициализацию нового экземпляра класса SiteMapNode, используя указанный параметр key для определения страницы, которую представляет узел, и поставщика карты веб-узла, который управляет данным узлом.Initializes a new instance of the SiteMapNode class, using the specified key to identify the page that the node represents and the site map provider that manages the node.

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

Выполняет инициализацию нового экземпляра класса SiteMapNode, используя указанный URL-адрес key для определения страницы, которую представляет узел, и поставщика карты веб-узла, который управляет данным узлом.Initializes a new instance of the SiteMapNode class using the specified URL, a key to identify the page that the node represents, and the site map provider that manages the node.

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

Выполняет инициализацию нового экземпляра класса SiteMapNode, используя указанный URL-адрес key для определения страницы, которую представляет узел, названия и поставщика карты веб-узла, который управляет данным узлом.Initializes a new instance of the SiteMapNode class using the specified URL, a key to identify the page that the node represents, a title, and the site map provider that manages the node.

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

Выполняет инициализацию нового экземпляра класса SiteMapNode, используя указанный URL-адрес key для определения страницы, которую представляет узел, названия и описания, а также поставщика карты веб-узла, который управляет данным узлом.Initializes a new instance of the SiteMapNode class using the specified URL, a key to identify the page that the node represents, a title and description, and the site map provider that manages the node.

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

Выполняет инициализацию нового экземпляра класса SiteMapNode с использованием указанного поставщика карты узла, который управляет данным узлом, URL-адреса, названия, описания, ролей, дополнительных атрибутов и явного и неявного ключей ресурса для локализации.Initializes a new instance of the SiteMapNode class using the specified site map provider that manages the node, URL, title, description, roles, additional attributes, and explicit and implicit resource keys for localization.

Свойства

Attributes Attributes Attributes Attributes

Получает или задает коллекцию атрибутов в дополнение к строго типизированным свойствам, которые описываются для класса SiteMapNode.Gets or sets a collection of additional attributes beyond the strongly typed properties that are defined for the SiteMapNode class.

ChildNodes ChildNodes ChildNodes ChildNodes

Получает или задает все дочерние узлы текущего объекта SiteMapNode из связанного поставщика SiteMapProvider.Gets or sets all the child nodes of the current SiteMapNode object from the associated SiteMapProvider provider.

Description Description Description Description

Получает или задает описание для объекта SiteMapNode.Gets or sets a description for the SiteMapNode.

HasChildNodes HasChildNodes HasChildNodes HasChildNodes

Получает значение, показывающее наличие дочерних узлов у текущего узла SiteMapNode.Gets a value indicating whether the current SiteMapNode has any child nodes.

Item[String] Item[String] Item[String] Item[String]

Получает или задает настраиваемый атрибут из коллекции Attributes или строку ресурса, основываясь на указанном ключе.Gets or sets a custom attribute from the Attributes collection or a resource string based on the specified key.

Key Key Key Key

Получает строку, представляющую ключ поиска для узла карты узла.Gets a string representing a lookup key for a site map node.

NextSibling NextSibling NextSibling NextSibling

Получает следующий узел SiteMapNode на том же самом иерархическом уровне, что и текущий узел, относительно свойства ParentNode (если искомый узел существует).Gets the next SiteMapNode node on the same hierarchical level as the current one, relative to the ParentNode property (if one exists).

ParentNode ParentNode ParentNode ParentNode

Получает или задает объект SiteMapNode, который является родительским для текущего узла.Gets or sets the SiteMapNode object that is the parent of the current node.

PreviousSibling PreviousSibling PreviousSibling PreviousSibling

Получает предыдущий объект SiteMapNode на том же самом иерархическом уровне, что и текущий объект, относительно объекта ParentNode (если объект существует).Gets the previous SiteMapNode object on the same level as the current one, relative to the ParentNode object (if one exists).

Provider Provider Provider Provider

Получает поставщика SiteMapProvider, который отслеживает объект SiteMapNode.Gets the SiteMapProvider provider that the SiteMapNode object is tracked by.

ReadOnly ReadOnly ReadOnly ReadOnly

Получает или задает значение, указывающее, может ли изменяться узел карты узла.Gets or sets a value indicating whether the site map node can be modified.

ResourceKey ResourceKey ResourceKey ResourceKey

Получает или задает ключ ресурса, который используется для локализации объекта SiteMapNode.Gets or sets the resource key that is used to localize the SiteMapNode.

Roles Roles Roles Roles

Возвращает или задает коллекцию ролей, связанных с объектом SiteMapNode (используется при фильтрации по ролям безопасности).Gets or sets a collection of roles that are associated with the SiteMapNode object, used during security trimming.

RootNode RootNode RootNode RootNode

Получает корневой узел корневого поставщика в иерархии поставщиков карты узла.Gets the root node of the root provider in a site map provider hierarchy. Если иерархии поставщиков не существует, то свойство RootNode получает корневой узел текущего поставщика.If no provider hierarchy exists, the RootNode property gets the root node of the current provider.

Title Title Title Title

Получает или задает название объекта SiteMapNode.Gets or sets the title of the SiteMapNode object.

Url Url Url Url

Получает или задает URL-адрес страницы, которую представляет объект SiteMapNode.Gets or sets the URL of the page that the SiteMapNode object represents.

Методы

Clone() Clone() Clone() Clone()

Создает новый узел, который представляет собой копию текущего узла.Creates a new node that is a copy of the current node.

Clone(Boolean) Clone(Boolean) Clone(Boolean) Clone(Boolean)

Создает новую копию текущего узла, при необходимости клонируя все родительские узлы и узлы предков текущего узла.Creates a new copy that is a copy of the current node, optionally cloning all parent and ancestor nodes of the current node.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Возвращает значение,указывающее, идентичен ли текущий объект SiteMapNode указанному объекту.Gets a value indicating whether the current SiteMapNode is identical to the specified object.

GetAllNodes() GetAllNodes() GetAllNodes() GetAllNodes()

Возвращает доступную только для чтения коллекцию всех объектов SiteMapNode, которые являются потомками вызываемого узла независимо от степени разделения.Retrieves a read-only collection of all SiteMapNode objects that are descendants of the calling node, regardless of the degree of separation.

GetDataSourceView(SiteMapDataSource, String) GetDataSourceView(SiteMapDataSource, String) GetDataSourceView(SiteMapDataSource, String) GetDataSourceView(SiteMapDataSource, String)

Возвращает объект SiteMapDataSourceView, который связан с текущим узлом.Retrieves the SiteMapDataSourceView object that is associated with the current node.

GetExplicitResourceString(String, String, Boolean) GetExplicitResourceString(String, String, Boolean) GetExplicitResourceString(String, String, Boolean) GetExplicitResourceString(String, String, Boolean)

Возвращает локализованную строку, основываясь на атрибуте SiteMapNode для локализации или используемую по умолчанию строку, если ресурс не найден, и логическую величину, показывающую, выдается ли исключение, если ресурс не найден.Retrieves a localized string based on a SiteMapNode attribute to localize, a default string to return if no resource is found, and a Boolean value indicating whether to throw an exception if no resource is found.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Возвращает хэш-код объекта SiteMapNode.Returns the hash code of the SiteMapNode object.

GetHierarchicalDataSourceView() GetHierarchicalDataSourceView() GetHierarchicalDataSourceView() GetHierarchicalDataSourceView()

Возвращает объект SiteMapHierarchicalDataSourceView, который связан с текущим узлом.Retrieves the SiteMapHierarchicalDataSourceView object that is associated with the current node.

GetImplicitResourceString(String) GetImplicitResourceString(String) GetImplicitResourceString(String) GetImplicitResourceString(String)

Получает локализованную строку, основываясь на имени атрибута и свойстве ResourceKey, которое задается поставщиком SiteMapProvider, отслеживающим узел SiteMapNode.Gets a localized string based on the attribute name and ResourceKey property that is specified by the SiteMapProvider by which the SiteMapNode is tracked.

GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
IsAccessibleToUser(HttpContext) IsAccessibleToUser(HttpContext) IsAccessibleToUser(HttpContext) IsAccessibleToUser(HttpContext)

Получает значение, показывающее, может ли быть просмотрен пользователем указанный узел карты узла в заданном контексте.Gets a value indicating whether the specified site map node can be viewed by the user in the specified context.

IsDescendantOf(SiteMapNode) IsDescendantOf(SiteMapNode) IsDescendantOf(SiteMapNode) IsDescendantOf(SiteMapNode)

Получает значение, показывающее, является ли текущий узел карты узла дочерним узлом или прямым потомком указанного узла.Gets a value indicating whether the current site map node is a child or a direct descendant of the specified node.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Преобразует значение данного экземпляра класса SiteMapNode в эквивалентное строковое представление.Converts the value of this instance of the SiteMapNode class to its equivalent string representation.

Явные реализации интерфейса

ICloneable.Clone() ICloneable.Clone() ICloneable.Clone() ICloneable.Clone()

Создает новый узел, который представляет собой копию текущего узла.Creates a new node that is a copy of the current node. Описание этого члена см. в разделе Clone().For a description of this member, see Clone().

IHierarchyData.GetChildren() IHierarchyData.GetChildren() IHierarchyData.GetChildren() IHierarchyData.GetChildren()

Возвращает иерархические дочерние элементы текущего элемента.Retrieves the hierarchical children data items of the current item. Описание этого члена см. в разделе GetChildren().For a description of this member, see GetChildren().

IHierarchyData.GetParent() IHierarchyData.GetParent() IHierarchyData.GetParent() IHierarchyData.GetParent()

Возвращает иерархический родительский элемент текущего элемента.Retrieves the hierarchical parent of the current item. Описание этого члена см. в разделе GetParent().For a description of this member, see GetParent().

IHierarchyData.HasChildren IHierarchyData.HasChildren IHierarchyData.HasChildren IHierarchyData.HasChildren

Возвращает значение, указывающее, имеются ли у текущего объекта SiteMapNode какие-либо дочерние узлы.Gets a value that indicates whether the current SiteMapNode object has any child nodes. Описание этого члена см. в разделе HasChildren.For a description of this member, see HasChildren.

IHierarchyData.Item IHierarchyData.Item IHierarchyData.Item IHierarchyData.Item

Получает иерархический элемент данных.Gets the hierarchical data item. Описание этого члена см. в разделе Item.For a description of this member, see Item.

IHierarchyData.Path IHierarchyData.Path IHierarchyData.Path IHierarchyData.Path

Получает путь элемента иерархических данных.Gets the path of the hierarchical data item. Описание этого члена см. в разделе Path.For a description of this member, see Path.

IHierarchyData.Type IHierarchyData.Type IHierarchyData.Type IHierarchyData.Type

Получает строку, которая представляет имя типа иерархического элемента данных.Gets a string that represents the type name of the hierarchical data item. Описание этого члена см. в разделе Type.For a description of this member, see Type.

INavigateUIData.Description INavigateUIData.Description INavigateUIData.Description INavigateUIData.Description

Возвращает свойство Description узла карты сайта.Gets the Description property of the site map node. Описание этого члена см. в разделе Description.For a description of this member, see Description.

INavigateUIData.Name INavigateUIData.Name INavigateUIData.Name INavigateUIData.Name

Возвращает свойство Title узла карты сайта.Gets the Title property of the site map node. Описание этого члена см. в разделе Name.For a description of this member, see Name.

INavigateUIData.NavigateUrl INavigateUIData.NavigateUrl INavigateUIData.NavigateUrl INavigateUIData.NavigateUrl

Возвращает свойство Url узла карты сайта.Gets the Url property of the site map node. Описание этого члена см. в разделе NavigateUrl.For a description of this member, see NavigateUrl.

INavigateUIData.Value INavigateUIData.Value INavigateUIData.Value INavigateUIData.Value

Возвращает свойство Title узла карты сайта.Gets the Title property of the site map node. Описание этого члена см. в разделе Value.For a description of this member, see Value.

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

Дополнительно