SPNavigationNode.IsVisible свойство не работает в sharepoint, как ожидалось - PullRequest
3 голосов
/ 12 апреля 2010

Я хочу скрыть узел быстрого запуска на сайте sharepoint, но он не работает должным образом. (

Мой код указан ниже:

                using (SPSite spSiteTest = new SPSite(serverUrl))
                {

                    using (SPWeb mySite = spSiteTest.OpenWeb())
                {
                    SPNavigationNodeCollection quickLaunchNodes = mySite.Navigation.QuickLaunch;

                    SPNavigationNode navQuickNode = new SPNavigationNode("Title", "www.stackoverflow.com", true);


                    foreach (SPNavigationNode node in quickLaunchNodes)
                    {
                        if (node.Title == navQuickNode.Title)
                        {
                            node.Url = navQuickNode.Url;
                            node.IsVisible = isVisible;
                            node.Update();
                            //mySite.Update();
                            return;
                        }
                    }   

                    quickLaunchNodes.AddAsFirst(navQuickNode);

                }
            }

Я что-то упустил или это ошибка?

Ответы [ 2 ]

1 голос
/ 13 апреля 2010

Вы можете удалить узлы следующим образом:

node.Delete();
mySite.Update();

или проверьте метод ExcludeFromNavigation, упомянутый в этого поста (его автор полагает, что невозможность скрыть узел навигации путем установки IsVisible в false также является ошибкой SharePoint).

0 голосов
/ 30 ноября 2014

Как показать / скрыть узлы навигации с помощью объектной модели на стороне сервера SharePoint (SSOM)

Класс PortalNavigation предоставляет для этой цели следующие методы:

Примеры

Как скрыть сайт от текущей навигации:

using (var site = new SPSite(siteUrl))
{
    using (var web = site.OpenWeb())
    {
        var subWeb = web.Webs["Announcements"];

        var publishingWeb = PublishingWeb.GetPublishingWeb(web);
        publishingWeb.Navigation.ExcludeFromNavigation(false,subWeb.ID);
        publishingWeb.Update();

    }
}

Как показать / скрыть узлы навигации с помощью клиентской объектной модели SharePoint (CSOM)

Не поддерживается изменение настроек навигации через SharePoint CSOM.

Относительно SharePoint 2013 :

В SharePoint 2013 был представлен новый Microsoft.SharePoint.Client.Publishing и Microsoft.SharePoint.Client.Publishing.Navigation пространства имен в CSOM API. Но, к сожалению, не поддерживается изменение навигации настройки с использованием класса WebNavigationSettings , так как свойства выставляется как только для чтения .

Для CSOM вы можете использовать класс ClientPortalNavigation.cs , представляющий аналог CSOM для класса SSOM PortalNavigation. Следуйте Получите доступ и управляйте настройками навигации с помощью клиентской объектной модели SharePoint , чтобы узнать больше.

Примеры

Как скрыть страницу из глобальной навигации:

using (var ctx = new ClientContext(webUri))
{

     //Get page file
     var pageFile = ctx.Web.GetFileByServerRelativeUrl("/news/Pages/Announcements.aspx");
     ctx.Load(pageFile);
     ctx.ExecuteQuery();

     //Hide page from Global navigation
     var navigation = new ClientPortalNavigation(ctx.Web);
     navigation.ExcludeFromNavigation(true, pageFile.UniqueId);
     navigation.SaveChanges();
 }

Как скрыть сайт от глобальной навигации:

 using (var ctx = new ClientContext(webUri))
 {

     //Get sub site
     var result = ctx.LoadQuery(ctx.Web.Webs.Where(w => w.Title == "Archive"));
     ctx.ExecuteQuery();
     var subWeb = result.FirstOrDefault();

     //Hide web from Global navigation
     var navigation = new ClientPortalNavigation(ctx.Web);
     navigation.ExcludeFromNavigation(true, subWeb.Id);
     navigation.SaveChanges();
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...