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 свойства. Url В то время как свойство используется XmlSiteMapProvider классом, который является поставщиком карты сайта по умолчанию для ASP.NET, в качестве ключа подстановки во внутренних коллекциях, которые поставщик использует для отслеживания узлов, класс поддерживает базовое Key свойство, SiteMapNode которое может использоваться поставщиками карт сайта для отслеживания узлов. Кроме того, Url свойство используется элементами управления навигацией для отображения гиперссылок на страницы в структуре навигации. Свойство Title является понятным именем для объекта SiteMapNode, часто совпадает с заголовком HTML веб-формы и используется элементами управления навигации для отображения простых меток. Наконец, NameValueCollection коллекция дополнительных Attributes атрибутов доступна поставщикам карт сайта, которые используют SiteMapNode объекты, но требуют дополнительных свойств, недоступных в базовом SiteMapNode классе.
Конструкторы
| Имя | Описание |
|---|---|
| SiteMapNode(SiteMapProvider, String, String, String, String, IList, NameValueCollection, NameValueCollection, String) |
Инициализирует новый экземпляр класса с помощью указанного SiteMapNode поставщика карты сайта, который управляет узлом, URL-адресом, заголовком, описанием, ролями, дополнительными атрибутами и явными и неявными ключами ресурсов для локализации. |
| SiteMapNode(SiteMapProvider, String, String, String, String) |
Инициализирует новый экземпляр класса с помощью указанного SiteMapNode URL-адреса, |
| SiteMapNode(SiteMapProvider, String, String, String) |
Инициализирует новый экземпляр класса с помощью указанного SiteMapNode URL-адреса, |
| SiteMapNode(SiteMapProvider, String, String) |
Инициализирует новый экземпляр класса с помощью указанного SiteMapNode URL-адреса, |
| SiteMapNode(SiteMapProvider, String) |
Инициализирует новый экземпляр SiteMapNode класса, используя указанный |
Свойства
| Имя | Описание |
|---|---|
| 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. |