SharePoint WebPart zoneId

SharePoint WebPart zoneId

我正在使用在线 SharePoint。
我想使用此 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 有关)。

我阅读了各种 post,从访问 .aspx 页面背后的代码试图找到 WebPartZone,访问 WebPartManager class(应该列出 ZoneId,但我不知道如何获取它,因为我正在使用 LimitedWebPartManager class).

我已经为 zoneId 尝试了各种值,但目前 none 有效:

findind zoneId 的正确方法是什么?

编辑

该页面是主页,我在某处读到它是一个 wiki 页面,所以它可能有不同的 ZoneId。

ZoneID 可能因页面布局而异,但通常 out-of-the-boxSharePoint 布局对 Web 部件区域使用以下 ID:

  • 标题栏
  • Header
  • 左栏
  • 中列
  • 右栏
  • 页脚

确保在导入 Web 部件后在文件上调用 update() 方法 object 并在上下文中调用 executeQueryAsync() 方法 - 后一个函数尤其负责发送请求到服务器并应用您的更改。

这是一篇关于以编程方式向页面添加 Web 部件的好文章:How to programmatically add a ClientSide Web Part to a SharePoint page