使用以下功能,我试图创建维基页面:
static void CreateWikiPage(ClientContext context, string pageName, string pageContent)
{
List wikiPages = context.Web.Lists.GetByTitle("Pages");
context.Load(wikiPages);
context.ExecuteQuery();
context.Load(wikiPages.RootFolder.Files);
context.ExecuteQuery();
wikiPages.RootFolder.Files[0].CopyTo(wikiPages.ParentWebUrl + "/Pages/" + pageName + ".aspx", true);
wikiPages.RootFolder.Update();
context.ExecuteQuery();
context.Load(wikiPages.RootFolder.Files);
context.Load(wikiPages.RootFolder.Folders);
context.ExecuteQuery();
Microsoft.SharePoint.Client.File wikiFile = null;
var query = new CamlQuery
{
ViewXml = "<View><Query><OrderBy><FieldRef Name='ID' Ascending='FALSE'/></OrderBy></Query><RowLimit>1</RowLimit></View>"
};
var items = wikiPages.GetItems(query);
context.Load(items, icol => icol.Include(i => i.File));
context.ExecuteQuery();
if (items.Count == 1)
{
var pageFile = items[0].File;
wikiFile = pageFile;
}
ListItem wikiPage = wikiFile.ListItemAllFields;
wikiPage["WikiField"] = pageContent;
wikiPage.Update();
context.ExecuteQuery();
}
我正在例外: Cannot invoke method or retrieve property from null object. Object returned by the following call stack is null.
由于WikiField
页面库中不存在该字段,因此可能会发生此错误。我猜您正在尝试在中创建一个,Enterprise Wiki Page
而不是一个Page Wiki Page Library
。它们是不同的,首先是发布页面,页面是基于Enterprise Wiki Page
布局的,第二个是Wiki WebPart页面。
因此,假设需要创建企业Wiki页面,下面演示了如何在SharePoint 2010中使用CSOM实现该页面。
public static void CreateWikiPage(ClientContext ctx, string pageName, string pageContent)
{
const string templateRedirectionPageMarkup = "<%@ Page Inherits=\"Microsoft.SharePoint.Publishing.TemplateRedirectionPage,Microsoft.SharePoint.Publishing,Version=14.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c\" %> <%@ Reference VirtualPath=\"~TemplatePageUrl\" %> <%@ Reference VirtualPath=\"~masterurl/custom.master\" %>";
var wikiPages = ctx.Web.Lists.GetByTitle("Pages");
var fileInfo = new FileCreationInformation
{
Url = pageName,
Content = Encoding.UTF8.GetBytes(templateRedirectionPageMarkup),
Overwrite = true
};
var wikiFile = wikiPages.RootFolder.Files.Add(fileInfo);
var wikiPage = wikiFile.ListItemAllFields;
wikiPage["PublishingPageContent"] = pageContent;
wikiPage["PublishingPageLayout"] = "/_catalogs/masterpage/EnterpriseWiki.aspx, Basic Page";
wikiPage.Update();
ctx.ExecuteQuery();
}
用法
CreateWikiPage(ctx,"Greetings.aspx","Welcome to SharePoint");
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句