使用CSOM创建Wiki页面时出现异常

水瓶座24

使用以下功能,我试图创建维基页面:

 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.

瓦迪姆·格雷米亚切夫(Vadim Gremyachev)

由于WikiField页面库中不存在该字段,因此可能会发生此错误我猜您正在尝试在中创建一个,Enterprise Wiki Page而不是一个Page Wiki Page Library它们是不同的,首先是发布页面,页面是基于Enterprise Wiki Page布局的,第二个是Wiki WebPart页面

因此,假设需要创建企业Wiki页面,下面演示了如何在SharePoint 2010中使用CSOM实现该页面。

如何在SharePoint 2010中使用CSOM创建企业Wiki页面

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章