使用XML定义文件以编程方式创建SharePoint 2010内容类型

本文关键字:2010 SharePoint 类型 创建 方式 定义 XML 文件 编程 使用 | 更新日期: 2023-09-27 18:19:07

是否可以使用XML定义文件以编程方式创建SharePoint 2010内容类型?可以通过以下方式添加SPFields:

SPContext.Current.Web.Fields.AddFieldAsXml("<xml />");

是否有类似的方式以编程方式添加内容类型到网站集合/网站?

使用XML定义文件以编程方式创建SharePoint 2010内容类型

您可以通过编程方式创建/添加内容类型,但不使用XML定义(据我所知)。您必须构造它,将其添加到内容类型集合中,并手动将字段引用添加到字段链接集合中。

一个粗略的例子是:

using (SPSite site = new SPSite("http://localhost"))
{
    using (SPWeb web = site.OpenWeb())
    {
        SPContentType contentType = new SPContentType(web.ContentTypes["Document"], web.ContentTypes, "Financial Document");
        web.ContentTypes.Add(contentType);
        contentType.Group = "Financial Content Types";
        contentType.Description = "Base financial content type";
        contentType.FieldLinks.Add(new SPFieldLink(web.Fields.GetField("OrderDate")));
        contentType.FieldLinks.Add(new SPFieldLink(web.Fields.GetField("Amount")));
        contentType.Update();
    }
}

您不能以这种方式控制内容类型id。我更喜欢按照Greg Enslow的回答使用功能

最常见的方法是使用一个特性定义,然后为您的站点集合激活该特性。该特性的xml看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
   <!-- Parent ContentType: Document (0x0101) -->
  <ContentType ID="0x0101000728167cd9c94899925ba69c4af6743e"
               Name="Financial Document"
               Group="Financial Content Types"
               Description="Base financial content type"
               Version="0">
    <FieldRefs>
      <FieldRef ID="{1511BF28-A787-4061-B2E1-71F64CC93FD5}" Name="OrderDate" DisplayName="Date" Required="FALSE"/>
      <FieldRef ID="{060E50AC-E9C1-4D3C-B1F9-DE0BCAC300F6}" Name="Amount" DisplayName="Amount" Required="FALSE"/>
    </FieldRefs>
  </ContentType>
</Elements>

完整的示例见http://msdn.microsoft.com/en-us/library/ms463449.aspx。

您尝试使用对象模型是否有特定的原因?