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

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

最佳答案

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

您可以为此目的使用以下方法。 ClientPortalNavigation.cs代表 SSOM 的 CSOM 对应项 PortalNavigation Class .

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

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

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

ClientPortalNavigation.cs is compatible with SharePoint 2010/2013 CSOM APIs.

引用资料

关于c# - Sharepoint 2013 站点 - CSOM - 更新导航设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27124620/

相关文章:

c# - 如何在 EF 中移动具有导航属性的子对象

c# - 在调试器可视化器中获取变量名

c# - 在 Sharepoint 2010 中发送带附件的电子邮件

c# - 如何获取从 Roslyn 中提取的 C# 解析器(语法树)

c# - 选择 HTML.RadioButtonFor 后如何为模型属性赋值

sharepoint - 自定义 MOSS 人物选取器 (PeopleEditor) 控件

css - 将 css 控制适配器应用到现有的 moss 发布站点

sharepoint - 如何从提供商托管的应用程序获取请求摘要值?

javascript - 如何在sharepoint列的href中调用javascript

javascript - 使用 caml 查询获取列表项剩余调用