sharepoint 2010 не может получить глобальные навигационные узлы в коде - PullRequest
0 голосов
/ 30 ноября 2011

У меня есть сайт sharepoint, и я хочу прочитать в коде информацию о глобальной навигации.

На странице свойств:

/ _ layouts / AreaNavigationSettings.aspx Я добавил "location", "organization", "98 "узлы.

enter image description here

Но когда я пытаюсь получить эти узлы в коде

  using (var site  = new Microsoft.SharePoint.SPSite(URL))
            {
                using (var currentWeb = site.OpenWeb())
                {
               return currentWeb.Navigation.GlobalNodes;

            }

}

У меня всегда теузлы:

  • Домашняя страница
  • Быстрый запуск
  • Навигационная панель SharePoint Top

Почему у меня есть эти странные узлы и как получить настоящий глобанnaviigation /?

Ответы [ 2 ]

2 голосов
/ 30 ноября 2011

Навигация в SharePoint является иерархической.Иерархия имеет ровно три узла:

  • Дом - представляет один значок «дома» в левом верхнем углу;
  • Быстрый запуск - представляет меню быстрого запуска в левой части окна.page;
  • Верхняя панель навигации - представляет собой панель навигации вверху страницы.

Вам необходимо углубиться в подузлы этих узлов, чтобы найти три узла - см. SPNavigationNode.Children собственность.В SharePoint отсутствуют уникальные идентификаторы для узлов навигации, поэтому приходится полагаться на заголовки (отображаемые имена).


ОБНОВЛЕНИЕ: Также обратите внимание, что ваш код содержит серьезный недостаток дизайна.Вы возвращаете объект, который логически вложен в SPWeb вне области действия, в которой находится экземпляр SPWeb, то есть вне оператора using.Хотя это может работать для узлов навигации, как правило, такое поведение приведет к ошибкам.Эти ошибки часто обрабатываются внутри SharePoint и приводят «только» к зарегистрированным сообщениям об ошибках, но это определенно то, что должен генерировать ваш код.

1 голос
/ 30 ноября 2011

Это работает для меня:

var pubWeb = PublishingWeb.GetPublishingWeb(web);
foreach (SPNavigationNode navigationNode in pubWeb.Navigation.GlobalNavigationNodes)
{
   //do stuff
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...