3

我创建了一个事件接收器并添加到 GAC。

如何将事件接收器绑定到特定的自定义内容类型?

我需要从 XML 文件中执行此操作:

到目前为止,我有:

Feature.xml 指向 Elements.xml 文件,但不确定 Elements.xml 文件。

您如何引用特定的内容类型?(我有特定内容类型的指南)

4

2 回答 2

8

要将事件接收器绑定到特定的内容类型,请使用内容类型元素文件的 XmlDocuments 元素。这是我即将出版的书“构建 SharePoint 用户体验”中的一段相当独特的摘录:

而且,为了澄清,由于我没有看到您尝试发布的 XML,您可以将其添加到 elements.xml 文件中的内容类型声明中。

(...)

使用功能将事件接收器附加到内容类型

像我们刚刚看到的那样附加事件接收器的重要一点是要注意没有办法将接收器绑定到内容类型,只能绑定到列表模板。

不,也没有办法将接收者添加到单个列表中。但是,正如我们在列表森林一章的电子邮件启用自定义列表部分中看到的,我们可以使用代码以编程方式添加事件接收器。我们也可以使用相同的技术将事件接收器添加到内容类型,但应该有一种方法可以在功能中使用 CAML 来做到这一点。毕竟这是我们定义内容类型的地方,我们将在本章后面看到。

答案?内容类型中的事件接收器在元素文件的不同部分中定义。我们再次查看 XmlDocuments 和第三个内置 XmlDocument 类型的 Receiver。Receiver XmlDocument 位于http://schemas.microsoft.com/sharepoint/events命名空间中。如果要在默认 SharePoint 安装中查看 Receiver XmlDocument,请在 ctypeswss.xml 文件中搜索内容类型 0x010107、DocumentWorkflowItem:

<XmlDocument NamespaceURI="http://schemas.microsoft.com/sharepoint/events">
 <spe:Receivers xmlns:spe="http://schemas.microsoft.com/sharepoint/events">
  <Receiver>
   <Name>Workflow Library Item Added</Name>
   <Type>ItemAdded</Type>
   <SequenceNumber>1</SequenceNumber>
   <Assembly>Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral,~CCC
    PublicKeyToken=71e9bce111e9429c</Assembly>
   <Class>Microsoft.SharePoint.Workflow.SPWorkflowLibraryEventReceiver</Class>
   <Data />
   <Filter />
  </Receiver>
… (snipped for space saving purposes
 </Receivers>
</XmlDocument>

注意 该示例对 Receivers 元素使用前缀 spe:。从技术角度来看,这不是必需的,但可以使您的代码更加清晰。如您所见,Receiver 元素遵循元素中定义的常规项目事件接收器的结构。当然,除了接收者是在内容类型的 XmlDocument 部分中定义的。

于 2009-02-18T17:20:04.097 回答
0

@Larsi:这里有同样的问题。看起来“继承”设置为 true 会导致错误,然后 XmlDocuments 被完全忽略:@ 因此,我们正在自定义功能中修复此问题并使用对象模型绑定事件接收器。

于 2010-12-23T11:21:04.647 回答