使用 CSOM 在 Sharepoint 中读取站点页面内容 [英] Read site page contents in Sharepoint using CSOM
本文介绍了使用 CSOM 在 Sharepoint 中读取站点页面内容的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在我的项目中,我需要在本地存储站点页面.这些页面可能是已发布或未发布的页面.我已尝试使用以下代码,但无法获取页面内容.
In my project I need to store the site pages locally. These pages may be of published or unpublished pages. I have tried with following code but unable to get contents of the page.
ClientContext clientcontext = new ClientContext(url);
var credentials = new SharePointOnlineCredentials(userid, SecurePass);
clientcontext.Credentials = credentials;
Web web = clientcontext.Web;
clientcontext.Load(web, website => website.Lists);
clientcontext.ExecuteQuery();
clientcontext.Load(web, website => website.Lists,
website => website.Lists.Where(
x => x.BaseTemplate == 119));
clientcontext.ExecuteQuery();
var _collection = web.Lists;
foreach (var pages in _collection)
{
clientcontext.Load(pages);
clientcontext.ExecuteQuery();
CamlQuery cq = new CamlQuery();
var pg = pages.GetItems(cq);
clientcontext.Load(pg);
clientcontext.ExecuteQuery();
foreach (var item in pg)
{
clientcontext.Load(item);
clientcontext.ExecuteQuery();
var f_webPage = clientcontext.Web.GetFileByServerRelativeUrl(item.File.ServerRelativeUrl);
clientcontext.Load(f_webPage);
clientcontext.ExecuteQuery();
}
}
如何获取网站页面内容?提前致谢.
How can I get site pages contents? Thanks in advance.
推荐答案
在站点页面库中(ListTemplateType.WebPageLibrary
) 根据内容类型可以从以下位置提取列表项的内容:
In Site Pages library (list type of ListTemplateType.WebPageLibrary
) the content for list item depending on the underling the content type could be extracted from:
WikiField
字段,如果是Wiki Page
CanvasContent1
字段,用于Site Page
(又名 现代"页面)
WikiField
field in case ofWiki Page
CanvasContent1
field in case ofSite Page
(aka "modern" page)
示例
var listTitle = "Site Pages";
var list = ctx.Web.Lists.GetByTitle(listTitle);
var items = list.GetItems(CamlQuery.CreateAllItemsQuery());
ctx.Load(items, icol => icol.Include( i => i["WikiField"], i => i["CanvasContent1"], i => i["FileRef"], i => i.ContentType));
ctx.ExecuteQuery();
foreach (var item in items)
{
Console.WriteLine(">>> {0}", item["FileRef"]);
switch (item.ContentType.Name)
{
case "Site Page":
Console.WriteLine(item["CanvasContent1"]);
break;
case "Wiki Page":
Console.WriteLine(item["WikiField"]);
break;
}
}
这篇关于使用 CSOM 在 Sharepoint 中读取站点页面内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文