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

时间:2010-09-22 18:27:59

标签: dom sharepoint object-model page-layout

我有一个基于发布文章页面内容类型的自定义发布页面内容类型。在此内容类型上,我有一个名为“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();

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

2 个答案:

答案 0 :(得分:0)

尝试在Update上调用newPublishingPage.Listitem方法而不是newPublishingPage本身。 像这样:

newPublishingPage.ListItem["PageContentCategory"] = pageContentCategory;
newPublishingPage.ListItem.Update();

然后您可能还需要其中一些行,具体取决于页面库的配置

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

答案 1 :(得分:0)

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