Dom SharePoint-以编程方式设置自定义发布页面布局自定义字段

Dom SharePoint-以编程方式设置自定义发布页面布局自定义字段,dom,sharepoint,object-model,page-layout,Dom,Sharepoint,Object Model,Page Layout,我有一个基于发布文章页面内容类型的自定义发布页面内容类型。在此内容类型上,我有一个名为“PageContentCategory”的自定义字段。在创建新页面的代码中,我尝试了以下方法: PublishingPage newPublishingPage = this.currentPublishingWeb.GetPublishingPages().Add(pageName, newPageSelectedLayout); if (pageContent.IsEmpty()) { pageCon

我有一个基于发布文章页面内容类型的自定义发布页面内容类型。在此内容类型上,我有一个名为“PageContentCategory”的自定义字段。在创建新页面的代码中,我尝试了以下方法:

PublishingPage newPublishingPage = this.currentPublishingWeb.GetPublishingPages().Add(pageName, newPageSelectedLayout);

if (pageContent.IsEmpty())
{
 pageContent = Properties.Resources.EAWorldArticleHandler_CreateNewArticlePage_DefaultPageContent;
}

newPublishingPage.ListItem[new Guid("{93496B35-7EC3-4132-B0D0-3BDC5606F5EF}")] = pageContentCategory;
newPublishingPage.ListItem[FieldId.PublishingPageContent] = pageContent;
newPublishingPage.Title = pageTitle;
newPublishingPage.Update();
我还尝试按字段名进行设置:

PublishingPage newPublishingPage = this.currentPublishingWeb.GetPublishingPages().Add(pageName, newPageSelectedLayout);

if (pageContent.IsEmpty())
{
 pageContent = Properties.Resources.EAWorldArticleHandler_CreateNewArticlePage_DefaultPageContent;
}

newPublishingPage.ListItem["PageContentCategory"] = pageContentCategory;
newPublishingPage.ListItem[FieldId.PublishingPageContent] = pageContent;
newPublishingPage.Title = pageTitle;
newPublishingPage.Update();

这两种方法都会引发错误。有没有办法在这样的代码中设置自定义字段的值?

尝试调用
newPublishingPage上的
Update
方法。Listitem
不在
newPublishingPage
上。 像这样:

newPublishingPage.ListItem["PageContentCategory"] = pageContentCategory;
newPublishingPage.ListItem.Update();
然后,根据页面库的配置,您可能还需要其中一些行

newPublishingPage.Checkin();
newPublishingPage.Publish();
newPublishingPage.Approve();

因此,我的问题的解决方案是,我必须以编程方式将内容类型添加到页面列表中,而不是让它在第一次添加具有该内容类型的页面时自动添加。显然,如果您让SharePoint自动将内容类型添加到页面列表中,那么它就无法正确绑定。因此,添加内容类型首先解决了我的问题。

引发错误的不是更新。它试图设置导致它的值本身。如果我注释掉那一行,我的代码就可以正常工作。