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 中引入了新的 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