网站和列表内容类型
上次修改时间: 2010年11月21日
适用范围: SharePoint Foundation 2010
本文内容
网站内容类型
列表内容类型
向列表添加网站内容类型的效果
您可以在网站级别创建和管理内容类型。在创建新的内容类型并将其添加到某网站的内容类型集合时,它就成为所谓的网站内容类型。此时,可将该内容类型添加到列表和文档库中,但现在尚未添加。
当您将网站内容类型添加到列表时,Microsoft SharePoint Foundation 会在本地复制该网站内容类型并将副本添加到该列表中。此本地实例称为列表内容类型,仅应用于此实例被复制到的列表。
网站内容类型
在创建内容类型并将其添加到某网站的内容类型集合时,此新内容类型便可用于任何子网站以及在其中创建它的网站。例如,如果在某个网站集的根网站上创建网站内容类型,则该网站内容类型便可用于该网站层次结构中的任何网站。如果您将新内容类型添加到该层次结构中比较靠下的某网站,它便可用于在其中添加它的网站和该层次结构中该网站下的任何网站。有关详细信息,请参阅内容类型作用域。
通过在用户界面中选择"网站设置",可以查看可用于网站的内容类型的列表。在显示"网站设置"页时,查找"库"部分,然后单击"网站内容类型"。若要以编程方式获取相似的列表,请通过实例化服务器代码中的 SPWeb 类或客户端代码中的 Web 类来创建一个表示该网站的对象。然后循环访问由该对象的 AvailableContentTypes 属性返回的集合。
由 AvailableContentTypes 属性返回的集合处于只读状态。这是因为该集合不仅包括当前网站上定义的内容类型,而且包括该网站层次结构中在该网站之上的网站上定义的内容类型。若要添加新内容类型,或者要删除现有内容类型,则必须引用一个可以修改的集合。为此,请访问某网站对象的 ContentTypes 属性。通过调用 Add 方法,可以向该属性返回的集合添加内容类型;通过调用 Delete 方法可以删除内容类型。
有关添加网站内容类型的信息,请参阅如何:向网站添加内容类型。有关删除网站内容类型的信息,请参阅 Delete 方法。
备注
若要在网站上创建或管理内容类型,您必须具有该网站的"网站设计者"访问权。具体来说,必须具有该网站内容类型所在的网站上的"管理列表"和"添加和自定义网页"访问权。
列表内容类型
与每个网站都有一个内容类型集合一样,网站中的每个列表或库同样具有一个内容类型集合。通过将内容类型添加到列表或库的内容类型集合中,便可将其添加到列表或库中。
在设置列表实例之前,您可以将新列表的内容类型集合作为列表定义的一部分来创建。在此列表定义的 ContentTypes 元素中,您可以引用现有网站内容类型,也可以定义新内容类型。在此情况下,新内容类型仅适用于根据相同列表定义创建的列表实例。新内容类型不属于此网站集,因此不可用于其他列表。有关在列表定义中创建列表内容类型的详细信息,请参阅如何:向列表添加内容类型。
在设置列表后,仍可以将内容类型添加到列表的内容类型集合中,但所添加的任何内容类型必须作为该列表范围内的网站内容类型存在。通过检查启用内容类型的列表的"列表设置"页,可在用户界面中验证这一点。在该页的"内容类型"部分,有一个标记为"从现有网站内容类型添加"的链接。单击此链接将打开一个页面,可在其中选择可用的网站内容类型,并可将其添加到列表的内容类型集合中。
重要信息 |
---|
在将网站内容类型添加到列表之前,应首先确保该列表支持内容类型。为此,请在用户界面中,选择"列表设置",然后选择"高级设置"。在"允许管理内容类型"下,单击"是"。若要以编程方式完成相同的操作,请通过服务器代码获取对 SPList 对象的引用,或通过客户端代码获取对 List 对象的引用;然后将 ContentTypesEnabled 属性设置为 true。 |
若要以编程方式将网站内容类型添加到列表,请从 SPWeb 对象(服务器)或 Web 对象(客户端)的 AvailableContentTypes 属性返回的集合中选择内容类型。然后,通过访问该列表对象的 ContentTypes 属性并调用该集合对象的 Add 方法,将该内容类型添加到列表的集合中。有关详细信息,请参阅如何:向列表添加内容类型。
备注
若要将内容类型添加到列表中,您必须具有对该列表的"列表管理员"权限。
不过,不能将给定网站中提供的每个内容类型都添加到该网站的每个列表或库中,知道这一点很重要。添加到文档库的任何内容类型都必须继承自内置文档内容类型或派生自文档的内容类型。相反,添加到列表的任何内容类型都不能派生自文档。有关详细信息,请参阅基内容类型层次结构。
向列表添加网站内容类型的效果
将网站内容类型添加到列表或库时,SharePoint Foundation 会在本地复制内容类型引用的所有列,并将其添加到列表的字段中。有关详细信息,请参阅字段和字段引用。
此外,SharePoint Foundation 还会在本地复制网站内容类型,并将副本添加到列表的内容类型集合中。新的列表内容类型是网站内容类型的子级。该列表内容类型的 Id 属性值与其父网站内容类型的 Id 属性值不同,但这两个内容类型最初是相同的。
列表内容类型通常派生自网站内容类型这一事实可能涉及变更管理问题。由此产生的一个后果是,无法将列表内容类型的自定义项轻松应用于其他列表。例如,用户可能会通过添加新列来编辑列表内容类型。此变更仅限于列表的内容类型。新列不会添加到从中派生列表内容类型的网站内容类型中,也无法沿用任何其他更改。针对派生的内容类型的更改决不会向上推送到父内容类型。
不过,列表内容类型会受对其父级做出的更改的影响。例如,用户可通过添加列来编辑网站内容类型,然后选择更新继承自它的所有内容类型。此结果会覆盖用户对派生的网站和列表内容类型执行的自定义操作。虽然可以防止内容类型接受对其父级做出的更改,但此步骤涉及到内容类型管理问题。有关详细信息,请参阅内容类型变更控制。
鉴于这些原因,通常最好在网站级别应用对内容类型的更改,在列表级别限制自定义项。
有关将更改传播到内容类型的信息,请参阅更新内容类型。有关演示如何发现正在何处使用网站内容类型的示例,请参阅 SPContentTypeUsage.GetUsages 方法。