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


SiteMapNode Класс

Определение

Представляет узел в иерархической структуре карты веб-узла, например, описываемой классом SiteMap и классами, которые реализуют абстрактный класс SiteMapProvider.

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
Наследование
SiteMapNode
Реализации

Примеры

Этот раздел содержит два примера кода. В первом примере кода показано, как создать новую коллекцию узлов карты сайта и добавить в нее элементы. Во втором примере кода демонстрируется загрузка данных карты сайта из текстового файла.

В следующем примере кода показано, как использовать 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

В следующем примере кода показано, как выполняется SimpleTextSiteMapProvider синтаксический анализ текстового файла, содержащего данные карты сайта в строках с разделителями-запятыми. 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

Комментарии

Объект SiteMapNode представляет страницу веб-сайта в структуре карты сайта. SiteMapNode Объекты загружаются статическим SiteMap классом во время выполнения с помощью одного или нескольких поставщиков карт сайта для загрузки данных карты сайта из постоянного хранилища в память. SiteMapNode объекты упаковываются классом SiteMapNodeItem для использования серверными веб-элементами управления, такими как SiteMapPath элемент управления .

Класс SiteMapNode включает несколько свойств, которые используются для описания одной страницы на веб-сайте, включая свойства, описывающие страницу, такие как Urlсвойства , Titleи Description . В то время как свойство используется классом , который является поставщиком XmlSiteMapProvider карты сайта по умолчанию для ASP.NET, в качестве ключа подстановки Url во внутренних коллекциях, которые поставщик использует для отслеживания узлов, класс поддерживает базовое Key свойство, SiteMapNode которое может использоваться поставщиками карт сайта для отслеживания узлов. Кроме того, Url свойство используется элементами управления навигации для отображения гиперссылок на страницы в структуре навигации. Свойство Title является понятным именем для SiteMapNode, часто совпадает с HTML-заголовком веб-формы и используется элементами управления навигацией для отображения простых меток. Наконец, для поставщиков карт сайта, NameValueCollection использующих SiteMapNode объекты, доступна коллекция дополнительных Attributes атрибутов, но для которых требуются дополнительные свойства, недоступные в базовом SiteMapNode классе.

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

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-адреса, названия, описания, ролей, дополнительных атрибутов и явного и неявного ключей ресурса для локализации.

Свойства

Attributes

Получает или задает коллекцию атрибутов в дополнение к строго типизированным свойствам, которые описываются для класса SiteMapNode.

ChildNodes

Получает или задает все дочерние узлы текущего объекта SiteMapNode из связанного поставщика SiteMapProvider.

Description

Возвращает или задает описание SiteMapNode.

HasChildNodes

Получает значение, показывающее наличие дочерних узлов у текущего узла SiteMapNode.

Item[String]

Получает или задает настраиваемый атрибут из коллекции Attributes или строку ресурса, основываясь на указанном ключе.

Key

Получает строку, представляющую ключ поиска для узла карты узла.

NextSibling

Получает следующий узел SiteMapNode на том же самом иерархическом уровне, что и текущий узел, относительно свойства ParentNode (если искомый узел существует).

ParentNode

Получает или задает объект SiteMapNode, который является родительским для текущего узла.

PreviousSibling

Получает предыдущий объект SiteMapNode на том же самом иерархическом уровне, что и текущий объект, относительно объекта ParentNode (если объект существует).

Provider

Получает поставщика SiteMapProvider, который отслеживает объект SiteMapNode.

ReadOnly

Получает или задает значение, указывающее, может ли изменяться узел карты узла.

ResourceKey

Получает или задает ключ ресурса, который используется для локализации объекта SiteMapNode.

Roles

Возвращает или задает коллекцию ролей, связанных с объектом SiteMapNode (используется при фильтрации по ролям безопасности).

RootNode

Получает корневой узел корневого поставщика в иерархии поставщиков карты узла. Если иерархии поставщиков не существует, то свойство RootNode получает корневой узел текущего поставщика.

Title

Получает или задает название объекта SiteMapNode.

Url

Получает или задает URL-адрес страницы, которую представляет объект SiteMapNode.

Методы

Clone()

Создает новый узел, который представляет собой копию текущего узла.

Clone(Boolean)

Создает новую копию текущего узла, при необходимости клонируя все родительские узлы и узлы предков текущего узла.

Equals(Object)

Возвращает значение,указывающее, идентичен ли текущий объект SiteMapNode указанному объекту.

GetAllNodes()

Возвращает доступную только для чтения коллекцию всех объектов SiteMapNode, которые являются потомками вызываемого узла независимо от степени разделения.

GetDataSourceView(SiteMapDataSource, String)

Возвращает объект SiteMapDataSourceView, который связан с текущим узлом.

GetExplicitResourceString(String, String, Boolean)

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

GetHashCode()

Возвращает хэш-код объекта SiteMapNode.

GetHierarchicalDataSourceView()

Возвращает объект SiteMapHierarchicalDataSourceView, который связан с текущим узлом.

GetImplicitResourceString(String)

Получает локализованную строку, основываясь на имени атрибута и свойстве ResourceKey, которое задается поставщиком SiteMapProvider, отслеживающим узел SiteMapNode.

GetType()

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

(Унаследовано от Object)
IsAccessibleToUser(HttpContext)

Получает значение, показывающее, может ли быть просмотрен пользователем указанный узел карты узла в заданном контексте.

IsDescendantOf(SiteMapNode)

Получает значение, показывающее, является ли текущий узел карты узла дочерним узлом или прямым потомком указанного узла.

MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Преобразует значение данного экземпляра класса SiteMapNode в эквивалентное строковое представление.

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

ICloneable.Clone()

Создает новый узел, который представляет собой копию текущего узла. Описание этого члена см. в разделе Clone().

IHierarchyData.GetChildren()

Возвращает иерархические дочерние элементы текущего элемента. Описание этого члена см. в разделе GetChildren().

IHierarchyData.GetParent()

Возвращает иерархический родительский элемент текущего элемента. Описание этого члена см. в разделе GetParent().

IHierarchyData.HasChildren

Возвращает значение, указывающее, имеются ли у текущего объекта SiteMapNode какие-либо дочерние узлы. Описание этого члена см. в разделе HasChildren.

IHierarchyData.Item

Получает иерархический элемент данных. Описание этого члена см. в разделе Item.

IHierarchyData.Path

Получает путь элемента иерархических данных. Описание этого члена см. в разделе Path.

IHierarchyData.Type

Получает строку, которая представляет имя типа иерархического элемента данных. Описание этого члена см. в разделе Type.

INavigateUIData.Description

Возвращает свойство Description узла карты сайта. Описание этого члена см. в разделе Description.

INavigateUIData.Name

Возвращает свойство Title узла карты сайта. Описание этого члена см. в разделе Name.

INavigateUIData.NavigateUrl

Возвращает свойство Url узла карты сайта. Описание этого члена см. в разделе NavigateUrl.

INavigateUIData.Value

Возвращает свойство Title узла карты сайта. Описание этого члена см. в разделе Value.

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

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