Получить текущие элементы навигации для всех семейств сайтов и веб-сайтов - SP2010 - PullRequest
1 голос
/ 15 февраля 2011

Я пытаюсь создать карту сайта для Sharepoint 2010, в которой будут перечислены все сайты и текущие элементы навигации этого сайта. Навигация между сайтами осуществляется через верхнюю навигацию. Однако у меня проблемы с получением текущих элементов навигации для каждого сайта. Похоже, что каждый раз, когда я получаю PortalSiteMapProvider для Интернета, он возвращает провайдера для всего семейства сайтов. Как я могу получить предметы только для этого сайта? Я запускаю этот код для каждого сайта, для которого я хочу получить элементы:

var provider = new PortalSiteMapProvider();
provider.NavigationType = PortalNavigationType.Current;
provider.CurrentWeb = web;
var rootNode = provider.RootNode;

Кто-нибудь знает, куда идти?

EDIT: Поэтому невозможно просто получить доступ к каждому семейству сайтов и запустить этот код. PortalSiteMapProvider не позволяет это. Однако этот код можно запустить в ashx, который находится в папке раскладок. Мне просто нужно получить доступ к этому файлу Ashx из семейства сайтов, которое я хочу перечислить, и он будет прекрасно работать:)

Ответы [ 2 ]

0 голосов
/ 04 ноября 2011

Так что невозможно просто получить доступ к каждому семейству сайтов и запустить этот код. PortalSiteMapProvider не позволяет это. Однако этот код можно запустить в ashx, который находится в папке раскладок. Мне просто нужно получить доступ к этому файлу Ashx из семейства сайтов, которое я хочу перечислить, и он будет прекрасно работать

0 голосов
/ 16 февраля 2011
    private void DrawWeb(SPWeb web, TreeNode node)
        {
            SPWebCollection webCol = web.Webs;
            foreach (SPWeb w in webCol)
            {
                var n = new TreeNode(w.Title);
                node.ChildNodes.Add(n);
                DrawWeb(w, n);
                w.Dispose();
            }
        }

Попробуйте вызвать этот метод следующим образом:

TreeNode webNode = new TreeNode(rootNode.Title);
DrawWeb(provider.CurrentWeb, webNode);

Надеюсь, это будет полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...