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, используя указанный параметр |
SiteMapNode(SiteMapProvider, String, String) |
Выполняет инициализацию нового экземпляра класса SiteMapNode, используя указанный URL-адрес |
SiteMapNode(SiteMapProvider, String, String, String) |
Выполняет инициализацию нового экземпляра класса SiteMapNode, используя указанный URL-адрес |
SiteMapNode(SiteMapProvider, String, String, String, String) |
Выполняет инициализацию нового экземпляра класса SiteMapNode, используя указанный URL-адрес |
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. |