更新内容类型
上次修改时间: 2010年12月1日
适用范围: SharePoint Foundation 2010
本文内容
用于更新内容类型的方法
存储对内容类型的更新
更新密封的内容类型
使用 Microsoft SharePoint Foundation,可以对内容类型进行更改(甚至在将内容类型部署到网站、添加到列表和分配给项目之后,也可对其进行更改)。甚至可以确保将这些更改传播到网站内容类型的子内容类型。
用于更新内容类型的方法
有两种可用于更新内容类型的标准方法。在更新内容类型之前,应决定哪一种方法最适合您的需求:
**方法 1:**对内容类型进行必要的更改,然后将这些更改向下推送到所有子内容类型。
如果必须对使用中的内容类型进针对性的、不连续的更改,则此方法最佳。
每个内容类型包含一个对其基于的网站内容类型的引用。这将使 SharePoint Foundation 能够将对父内容类型所做的更改传播或向下推送 到其子网站和列表内容类型。在对网站内容类型进行更改时,可以选择将这些更改向下推送到其所有子内容类型站。
例如,假定必须向网站内容类型添加另一个列。可以将此列添加到网站内容类型,然后使用向下推送功能以确保将此列添加到该内容类型的所有子内容类型。这包括基于该内容类型的其他网站内容类型,以及基于该网站内容类型及其子内容类型的列表内容类型。
有关在将更改推送到子内容类型时的注意事项的详细信息,请参阅更新子内容类型。
**方法 2:**使用所需的更改创建新的内容类型,将此类型部署到先前的内容类型存在的位置,然后将先前的内容类型添加到 _Hidden 内容类型组中。
如果希望将当前正在使用的内容类型替换为已修订的内容类型,但仍为已对其分配当前内容类型的项目保留当前内容类型,则此方法最佳。
例如,假定具有一个公司已使用很多年的名为"ProductSpec"的产品说明的内容类型。现在,产品说明中跟踪的要求已发生更改。需要创建一个内容类型来包含这些新的要求,但由于历史原因,必须仍保留现有的"ProductSpec"内容类型,在过去的几年中,已将此内容类型分配给大量项目。在此情况下,可以基于现有的"ProductSpec"内容类型创建名为"ProductSpec2010"的新内容类型。在将"ProductSpec2010"内容类型打包为功能之后,可以编写代码以便为网站集安装并激活此内容类型,并将"ProductSpec2010"内容类型添加到已对其添加"ProductSpec"内容类型的每个网站和列表。最后,可以编写代码以将"ProductSpec"内容类型的 Hidden 属性设置为 true。现在,当用户进入网站以创建产品说明时,他们可以选择"ProductSpec2010"内容类型;不再列出"ProductSpec"内容类型。但是,"ProductSpec"内容类型将在已添加它的网站和列表上保留,并且分配了此内容类型的项目将保持不变。
在列表视图的"新建"菜单上不显示已隐藏的内容类型。因此,用户不能从列表中创建此内容类型的项目。有关详细信息,请参阅内容类型访问控制。
存储对内容类型的更新
SharePoint Foundation 绝不会将对内容类型的更改写回内容类型定义文件中。相反,它会将对内容类型的更新作为 SharePoint Foundation 数据库中的项存储。
由于在向列表添加网站内容类型时,SharePoint Foundation 会将网站内容类型作为列表内容类型本地复制到列表中,因此将所有列表内容类型作为 SharePoint Foundation 数据库中的项存储。有关详细信息,请参阅网站和列表内容类型。
有关内容类型定义文件的详细信息,请参阅内容类型定义。
重要信息 |
---|
在任何环境下,不得在安装并激活内容类型之后更新此内容类型的内容类型定义文件。SharePoint Foundation 不跟踪对此内容类型定义文件所做的所有更改。因此,没有用于将对网站内容类型所做的所有更改向下推送到子内容类型的可靠方法。 |
更新密封的内容类型
无法通过用户界面或对象模型更新密封的内容类型。如果必须对密封的内容类型进行更新,则必须将内容类型的 Sealed 属性设置为 false,然后才能进行更改。不得直接编辑内容类型定义文件。
若要设置 SPContentType 对象的 Sealed 属性,则必须具有网站集管理员权限。有关详细信息,请参阅内容类型变更控制。