基于位置的元数据默认设置
上次修改时间: 2015年3月9日
适用范围: SharePoint Server 2010
本文内容
介绍基于位置的元数据默认值
条件和优先
注册事件接收器以应用默认元数据
配置位置的元数据默认值
基于位置的元数据默认值可编程性
本主题介绍基于位置的元数据默认值、其配置选项、控制其应用的优先规则以及基于位置的元数据默认值如何使用事件接收器来应用默认元数据。
介绍基于位置的元数据默认值
基于位置的元数据默认值基于位置管理元数据字段的默认值并应用它们,以便在用户编辑文档时它们可用。在用户与 Microsoft SharePoint Server 2010 网站交互时,SharePoint Server 应用默认值,以便在用户首次看到文档编辑表单时会显示它们。Microsoft Office 2010 应用程序(如 Microsoft Word 2010)在保存文档时获得位置的默认值。保存文档时,客户端应用程序获得保存内容项的位置的内容类型信息,服务器应用默认值并在 Office 2010 文档中生成属性架构。
条件和优先
基于位置的元数据默认值按照条件规则确定何时对文档应用默认值。本节首先列出了条件,然后介绍用于应用它们的优先规则。
应用默认值:
上载单个文件时。
使用资源管理器视图或使用上载多个文档 ActiveX 控件来批量添加文件时。
创建新的发布网页时。
在文档集中创建新的默认文档时。
工作流创建文档时。
直接从 Office 2010 客户端应用程序或 SharePoint Workspace 保存时。
文档转换完成后。
SharePoint Server 2010 应用和实施基于位置的元数据默认值的方法是:首先制定一组常规优先规则来确定应用哪些元数据默认值以及采用什么顺序。例如,使用特定优先规则来对服务器应用默认值、注册事件接收器、确定在将文档上载到服务器时引发的事件序列等等。
SharePoint Server 2010 如何以及何时对各个项应用基于位置的元数据默认值,由功能如何设置优先顺序来控制。首先,在将文档上载到文档库中的文件夹时,从不同位置获取列的基于位置的元数据默认值,其中包括:
要上载的可能包含内置列(例如"标题")值的文档或以前存储的应用了架构的文档(包括相同的列)。这些是要上载的文档可以包含列值的两种情形。
列表上的字段定义,它可能指定默认值。
要将文档上载到文档库中的位置,它可能指定默认列值。
使用优先规则来确定应用于列的值:
如果上载的文档包含的字段值与字段定义的列表默认值相等,则 SharePoint Server 2010 将基于优先规则使用基于位置的默认值(如果存在)覆盖字段的当前值。
如果上载的文档包含的值与列表默认值不同,则 SharePoint Server 2010 将保留该值,即使基于位置的默认值存在也是如此。
如果字段不存在,则服务器将使用字段定义中设置的默认值。
注册事件接收器以应用默认元数据
首次为文档库中的任何位置配置基于位置的元数据默认值时,SharePoint Server 2010 将在该文档库上注册新的同步 ItemAdded 后期事件的事件接收器。注册事件后,服务器将对每个位置的默认值应用它。事件序列会影响如何将基于位置的元数据默认值从文档中提升到 SharePoint Server 2010 列表中的相应列、为位置指定哪些默认值以及是否需要更新或更正任何属性值。
用户将文档上载到某个位置。此时,将元数据从文档中提升。
新的 ItemAdded 事件接收器运行。它检查为位置指定了哪些基于位置的元数据默认值,并在指定了默认值且当前值与指定的内容类型的默认值等同时更新任何属性值。
用户会看到项的标准编辑表单,并且那里已有位置的正确默认值。
如果移除文档库中的最后一个每个位置的默认值,则服务器将取消注册事件接收器。
在将文档上载到服务器后,将触发 ItemAdded 事件,并将文档的所有列的元数据值提升到列表中的相应列。SharePoint Server 2010 将为文档显示编辑表单,而服务器将使用常规优先规则来更改实际元数据值。
配置位置的元数据默认值
您可以为文件夹层次结构中支持设置默认值的列配置基于位置的元数据默认值。如果为父文件夹配置了元数据值,则其子文件夹将从父文件夹继承元数据值,除非为子文件夹明确指定了其他元数据值。根据文件夹或元数据是通过 UI 还是 API 进行操作或者如何进行操作,文件夹和子文件夹的默认元数据值可能会受到影响。
假定没有为任何文件夹或子文件夹配置默认值,并且列表只包括一列(名为"TheOnlyColumn"的文本列,包含表示默认值的空字符串),一系列操作(共三个)基于继承修改文件夹和子文件夹的默认元数据值。例如,考虑如下一个示例结构:
名为 DocLib 的文件夹是父文件夹。
名为 Alpha 和 Beta 的文件夹是 DocLib 文件夹的子文件夹。
文件夹 AlphaOne 和 AlphaTwo 是 Alpha 的子文件夹。
BetaOne 是 Beta 的子文件夹。
第一个操作:导航到 Beta 文件夹并设置默认值
用户导航到 Beta 文件夹并为 TheOnlyColumn 设置默认值"Z"。
表 1. 为文件夹设置元数据值的效果:第一个操作
如果在此文件夹中添加项... |
TheOnlyColumn 的默认值为... |
---|---|
DocLib(根) |
空 |
Alpha |
空 |
AlphaOne |
空 |
AlphaTwo |
空 |
Beta |
Z |
BetaOne |
Z |
更改会同时影响 Beta 文件夹和 BetaOne 文件夹:修改 Beta 的元数据值会影响 BetaOne,因为 BetaOne 是 Beta 的子文件夹,所以它继承其父文件夹的元数据值。
第二个操作:导航到 Alpha 文件夹并设置默认值
第二个用户导航到 Alpha 文件夹并设置默认值"Y"。
表 2. 为文件夹设置元数据值的效果:第二个操作
如果在此文件夹中添加项... |
TheOnlyColumn 的默认值为... |
DocLib(根) |
空 |
Alpha |
Y |
AlphaOne |
Y |
AlphaTwo |
Y |
Beta |
Z |
BetaOne |
Z |
更改会影响 Alpha 文件夹及其子文件夹。Beta 文件夹不受影响。
第三个操作:导航到 AlphaOne 文件夹并设置默认值
最后,另一个用户导航到文件夹 AlphaOne 并设置默认值"X"。
表 3. 为文件夹设置元数据值的效果:第三个操作
如果在此文件夹中添加项... |
TheOnlyColumn 的默认值为... |
---|---|
DocLib(根) |
空 |
Alpha |
Y |
AlphaOne |
X |
AlphaTwo |
Y |
Beta |
Z |
BetaOne |
Z |
AlphaTwo 文件夹的值仍为"Y"。更改 AlphaOne 文件夹不会影响 AlphaTwo,因为 AlphaTwo 不是 AlphaOne 文件夹的子文件夹。
基于位置的元数据默认值可编程性
基于位置的元数据默认值的对象模型主要位于 MetadataDefaults 类型中。它包括可用于应用基于位置的元数据默认值,获取、设置和移除 String 和 SPFolder 对象的默认元数据以及获取字段默认值的方法。MetadataDefaults 的管理参考文档包含演示此功能的代码段。