Sharepoint 2013站点 - CSOM - 更新导航设置

时间:2014-11-25 10:48:16

标签: c# sharepoint sharepoint-2013 csom

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

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 正如我们从客户端服务器对象模型做的那样。 有什么方法可以解决这个问题吗? 感谢

1 个答案:

答案 0 :(得分:4)

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

您可以为此目的使用以下方法。 ClientPortalNavigation.cs代表SSOM PortalNavigation Class的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。

参考