SiteMapNode Конструкторы
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Инициализирует новый экземпляр класса SiteMapNode и связывает его с указанным объектом SiteMapProvider.
Перегрузки
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-адреса, названия, описания, ролей, дополнительных атрибутов и явного и неявного ключей ресурса для локализации. |
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
Зависящий от поставщика ключ поиска.
Исключения
Комментарии
Класс 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-адрес страницы узла, которую представляет узел.
Исключения
Примеры
В следующем примере кода показано, как использовать 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
Метка узла, которая обычно отображается элементами управления перемещением.
Исключения
Примеры
В следующем примере кода показано, как использовать 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
Описание страницы, которую представляет узел.
Исключения
Примеры
В следующем примере кода показано, как использовать 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-адрес в область поставщика.
Если не title
или description
предоставляется, вызовы функций Title или Description возвращают свойства String.Empty поля.
См. также раздел
Применяется к
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
Неявный ключ ресурса, используемый для локализации.
Исключения
Комментарии
Класс XmlSiteMapProvider , который является реализацией поставщика по умолчанию SiteMapProvider для ASP.NET, использует SiteMapNode.Url свойство в качестве ключа подстановки, если он указан для узла (если URL-адрес не указан, для узла создается идентификатор отслеживания). Таким образом, любой SiteMapNode объект, предоставляющий URL-адрес и используемый XmlSiteMapProvider , должен иметь уникальный URL-адрес в область поставщика.
Коллекция NameValueCollection атрибутов, SiteMapNode создаваемых с помощью , доступна через Attributes свойство и позволяет легко применять дополнительные атрибуты к узлу карты сайта и расширять его возможности, не создавая для этого пользовательский класс.
IList Укажите коллекцию ролей, чтобы предоставить набор ролей, которые могут просматривать узел, когда SecurityTrimmingEnabled свойство возвращает true
. Для получения дополнительной информации см. SecurityTrimmingEnabled.
Поставщик XmlSiteMapProvider использует свойство в SiteMapNode.Url качестве ключа подстановки. Поэтому любой SiteMapNode объект , используемый , XmlSiteMapProvider должен иметь уникальный URL-адрес в область поставщика.
Если не title
или description
предоставляется, вызовы функций Title или Description возвращают свойства String.Empty поля.
Чтобы программно указать ресурсы для локализации, присвойте значению implicitResourceKey
уникальное имя, которое будет использоваться для идентификации локализованных ресурсов для узла, или задайте NameValueCollectionexplicitResourceKeys
коллекцию name/value
пар, где name
является свойством узла или настраиваемым атрибутом для локализации и value
содержит значения локализации для свойства узла или настраиваемого атрибута. Затем локализованные значения можно задать в соответствующих RESX-файлах. Дополнительные сведения о локализации Title, Descriptionи любых настраиваемых SiteMapNode свойств объекта см. в разделе Практическое руководство. Локализация Site-Map данных. Требования к синтаксису коллекции см. в explicitResourceKeys
разделе NameValueCollection.