SharePoint 2013 网站 - CSOM - 更新导航设置

本文关键字:导航 设置 更新 CSOM 网站 SharePoint 2013 | 更新日期: 2023-09-27 18:31:48

我们需要更新站点的全局和当前导航设置。下面是我们的代码

var publishingWeb  = PublishingWeb.GetPublishingWeb(this.CC, subWeb);
                    // WebNavigationSettings
                    var webNavigationSettings = new WebNavigationSettings(this.CC, subWeb);
                    webNavigationSettings.GlobalNavigation.Source = StandardNavigationSource.PortalProvider;
                    webNavigationSettings.CurrentNavigation.Source = StandardNavigationSource.PortalProvider;
                    // CSOM don't have: publishingWeb.Navigation.GlobalIncludeSubSites.
                    subWeb.AllProperties["__GlobalIncludeSubSites"] = "True"; //TODO: Verify why it is not working. 
                    subWeb.AllProperties["__GlobalIncludePages"] = "True"; //TODO: Verify why it is not working.
                    subWeb.Update();
                    webNavigationSettings.Update(tSession);
                    CC.Load(subWeb, WEB_INCLUDES);
                    // Apply the load
                    CC.ExecuteQuery();

由于我们正在使用 CSOM,因此我们没有

publishingWeb.Navigation.GlobalIncludeSubSites

.因此,我们尝试使用 AllProperties 进行设置,以设置 GlobalIncludeSubSites 和 GlobalIncludePages。


但是这些属性没有被设置。有没有办法解决这个问题。我浏览了文章 http://discoveringsharepoint.wordpress.com/2013/03/19/programmatically-set-navigation-settings-in-sharepoint-2013/但它使用命名空间:Microsoft.SharePoint.Publishing.Navigation


但是我们的命名空间是:Microsoft.SharePoint.Client.Publishing.Navigation正如我们从客户端服务器对象模型所做的那样。有什么办法可以解决这个问题吗?谢谢

SharePoint 2013 网站 - CSOM - 更新导航设置

> 在 SharePoint 2013 中引入了新的 Microsoft.SharePoint.Client.Publishing 和 Microsoft.SharePoint.Client.Publishing.Navigation 命名空间。但遗憾的是,不支持使用 WebNavigationSettings 类修改导航设置,因为属性以只读形式公开。

为此,您可以利用以下方法。ClientPortalNavigation.cs 表示 SSOM PortalNavigation 类的 CSOM 对应项。

下面的示例演示如何使用该类并更新导航设置:

using (var ctx = new ClientContext(webUri))
{
    var navigation = new ClientPortalNavigation(ctx.Web);
    navigation.CurrentIncludePages = true;
    navigation.GlobalIncludePages = false;
    navigation.SaveChanges();   
}

ClientPortalNavigation.cs 与 SharePoint 2010/2013 兼容 CSOM API。

引用

  • 通过 SharePoint 客户端对象模型访问和操作导航设置
  • 客户端门户导航.cs