SiteMap.RootNode Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
SiteMapNode Возвращает объект, представляющий страницу верхнего уровня структуры навигации для сайта.
public:
static property System::Web::SiteMapNode ^ RootNode { System::Web::SiteMapNode ^ get(); };
public static System.Web.SiteMapNode RootNode { get; }
static member RootNode : System.Web.SiteMapNode
Public Shared ReadOnly Property RootNode As SiteMapNode
Значение свойства
Объект SiteMapNode , представляющий страницу верхнего уровня структуры навигации сайта; в противном случае, nullесли включена обрезка безопасности и узел не может быть возвращен текущему пользователю.
Исключения
Функция карты сайта не включена.
–или–
Разрешение RootNode , в которое возникает null, если включена обрезка безопасности, а корневой узел не отображается текущему пользователю.
Поставщик по умолчанию, указанный в конфигурации, не существует.
Эта функция поддерживается только при выполнении в низком доверии или более поздней версии.
Примеры
В следующем примере кода показано, как использовать RootNode свойство для получения SiteMapNode объекта, представляющего корневой узел сайта, независимо от текущего расположения в иерархии страниц.
<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
// Examine the CurrentNode, and navigate the SiteMap relative to it.
Response.Write(SiteMap.CurrentNode.Title + "<br />");
Response.Write("<font COLOR='red'>" + SiteMap.CurrentNode.Url + "</font><br />");
// What nodes are children of the CurrentNode?
if (SiteMap.CurrentNode.HasChildNodes) {
IEnumerator childNodesEnumerator = SiteMap.CurrentNode.ChildNodes.GetEnumerator();
while (childNodesEnumerator.MoveNext()) {
// Prints the Title of each node.
Response.Write(childNodesEnumerator.Current.ToString() + "<br />");
}
}
Response.Write("<hr />");
// Examine the RootNode, and navigate the SiteMap relative to it.
Response.Write(SiteMap.RootNode.Title + "<br />");
Response.Write(SiteMap.RootNode.Url + "<br />");
// What nodes are children of the RootNode?
if (SiteMap.RootNode.HasChildNodes) {
IEnumerator rootNodesChildrenEnumerator = SiteMap.RootNode.ChildNodes.GetEnumerator();
while (rootNodesChildrenEnumerator.MoveNext()) {
// Prints the Title of each node.
Response.Write(rootNodesChildrenEnumerator.Current.ToString() + "<br />");
}
}
}
</script>
<script runat="server">
Private Sub Page_Load(sender As Object, e As EventArgs)
' Examine the CurrentNode, and navigate the SiteMap relative to it.
Response.Write(SiteMap.CurrentNode.Title & "<br />")
Response.Write("<font COLOR='red'>" & SiteMap.CurrentNode.Url & "</font><br />")
' What nodes are children of the CurrentNode?
If (SiteMap.CurrentNode.HasChildNodes) Then
Dim ChildNodesEnumerator As IEnumerator = SiteMap.CurrentNode.ChildNodes.GetEnumerator()
While (ChildNodesEnumerator.MoveNext())
' Prints the Title of each node.
Response.Write(ChildNodesEnumerator.Current.ToString() & "<br />")
End While
End If
Response.Write("<hr />")
' Examine the RootNode, and navigate the SiteMap relative to it.
Response.Write(SiteMap.RootNode.Title & "<br />")
Response.Write(SiteMap.RootNode.Url & "<br />")
' What nodes are children of the RootNode?
If (SiteMap.RootNode.HasChildNodes) Then
Dim RootNodesChildrenEnumerator As IEnumerator = SiteMap.RootNode.ChildNodes.GetEnumerator()
While (RootNodesChildrenEnumerator.MoveNext())
' Prints the Title of each node.
Response.Write(RootNodesChildrenEnumerator.Current.ToString() & "<br />")
End While
End If
End Sub ' Page_Load
</script>
Комментарии
Класс SiteMap получает RootNode свойство, запрашивая его от поставщика. Если существует иерархия поставщиков, SiteMap класс извлекает корневой узел корневого поставщика в иерархии. Чтобы получить доступ к корневому узлу поставщика по умолчанию, вызовите Provider свойство, которое извлекает поставщика по умолчанию и его RootNode свойство.
Объект XmlSiteMapProvider , который является поставщиком по умолчанию для SiteMap класса, поддерживает только один RootNode.
Если вы реализуете собственный SiteMapProvider класс и переопределяете абстрактное RootNode свойство, необходимо предоставить собственную реализацию для отслеживания RootNode свойства экземпляра SiteMapNode .
Корневой узел должен быть видимым для всех пользователей с помощью конструктора. Если корневой узел не отображается всем пользователям при включении обрезки безопасности, доступ к RootNode свойству может привести к исключению InvalidOperationException .