【发布时间】:2019-04-11 21:14:07
【问题描述】:
我正在使用 SharePoint Online。
我想使用此 CSOM 代码将 WebPart 添加到页面:
SP.File oFile = _web.GetFileByUrl(SiteUrl + "/SitePages/" + pageName);
oFile.CheckOut();
LimitedWebPartManager limitedWebPartManager = oFile.GetLimitedWebPartManager(PersonalizationScope.Shared);
var importedWebPart = limitedWebPartManager.ImportWebPart(webPartSchemaXml);
var webPart = limitedWebPartManager.AddWebPart(importedWebPart.WebPart, zoneid, zoneIndex);
oFile.Update();
await SiteCtx.ExecuteQueryAsync();
oFile.CheckIn(String.Empty, CheckinType.MinorCheckIn);
问题是如何为zoneid字符串变量分配正确的值,
这是要添加 Web 部件的 Web 部件区域的名称。
当我运行这段代码时,什么也没有发生!
(它不会将 WebPart 添加到页面,我怀疑它与错误的 zoneId 有关)。
我已经阅读了各种帖子,从访问 .aspx 页面后面的代码试图找到 WebPartZone,访问 WebPartManager 类(它应该列出 ZoneId,但我不知道如何获取它,因为我使用的是LimitedWebPartManager 类)。
我尝试了 zoneId 的各种值,但目前它们都不起作用:
- 1 区(只是猜测!)
- 区域 2(通过编辑页面手动编辑 web 部件时,我在右侧选项卡中看到它)
- Body(代码在几天前就可以工作了!但现在不行了)
- 标题
- 左
- 底部
findind zoneId 的正确方法是什么?
编辑
该页面是主页,我在某处读到它是一个 wiki 页面,所以它可能有不同的 ZoneId。
【问题讨论】:
-
只是为了确保:运行这个 sn-p 之后,您是否在上下文中调用了 oFile.update() 和 executeQueryAsync()?
标签: sharepoint web-parts