SharePoint Foundation 事件简介

上次修改时间: 2010年4月7日

适用范围: SharePoint Foundation 2010

Microsoft SharePoint Foundation 事件模型依赖名为事件接收器的托管组件,这些接收器在特定触发事件发生时会响应 SharePoint Foundation 对象。通过继承某个 SharePoint 事件接收器基类,可创建事件接收器。创建事件接收器之后,可通过替代事件接收器类的方法来实现事件处理程序。然后,将该类编译到程序集中,并将其放入全局程序集缓存 (GAC) 中;然后再将事件处理程序绑定到事件宿主。

事件接收器是一段托管代码,该代码会在发生针对 SharePoint 对象的特定触发操作时响应 SharePoint Foundation 事件。触发操作包括添加、移动、签入、签出等活动。希望接收事件的对象称为事件宿主,包括网站集、网站、列表、工作流或功能等对象。

几乎任何 SharePoint 对象都会引发可由一个或多个事件接收器类捕获的事件。在对 SharePoint 事件分类时,应该首先考虑在其上引发该事件的对象(即事件宿主,例如在网站集、列表或列表项中),然后考虑该事件是同步还是异步的。有关引发可捕获事件的 SharePoint Foundation 对象的列表,请参阅 SharePoint Foundation 事件目录

SharePoint Foundation 事件模型

SharePoint Foundation 事件模型是在一组常用组件和概念的基础之上构建的,其余章节中将对这些组件和概念进行总结。

Before 和 After 事件

事件分为两类:Before 事件和 After 事件。Before 事件在 SharePoint Foundation 向内容数据库写回内容之前且发生指定操作时引发,因此,也被称为同步 事件。这样,SharePoint Foundation 便可以在指定操作发生后、但将数据提交至数据库之前执行任务。使用同步 Before 事件的恰当示例是执行数据验证,因为 Before 事件在提交数据之前触发。还可以使用 Before(或同步)事件取消用户操作 – 例如,在数据验证失败时。

Before 事件触发的事件处理程序代码(即 Before 事件处理程序)与执行触发它的用户操作的代码在同一进程中执行。因此,Before 事件始终为同步事件。请注意,您可以识别 Before 事件,因为其成员名称以"-ing"后缀结束,例如 ItemAdding、ListAdding 等。

相反,After 事件会触发在将用户操作提交至内容数据库后执行的事件处理程序,还会调用在修改内容数据库后运行的代码。这样便可开发相应代码来执行用户完成特定操作之后发生的逻辑。

由于 After 事件与触发操作在不同进程中执行,因此它们可以同步执行,也可以异步执行。您可以识别 After 事件,因为其成员名称以"-ed"后缀结束,例如 ItemDeleted、WebProvisioned 等。

事件宿主

事件宿主是希望接收事件的对象(如网站集、Web、列表和列表项),换句话说,事件宿主是其事件接收器可"侦听"SharePoint Foundation 事件的对象。这些 SharePoint Foundation 2010 事件宿主对象类型包括常见对象的实例,例如 SPSiteSPWebSPListSPContentType。每种事件宿主类型都有可从中继承的特定事件接收器基类型,用于创建事件接收器集合。

有关宿主类型及其事件接收器类型的完整列表,请参阅 SharePoint 事件、事件接收器和事件宿主表SharePoint Foundation 事件目录

事件接收器和处理事件

SharePoint Foundation 事件处理程序是自定义托管代码的编译模块,该代码的调用由您指定的事件触发。事件处理程序代码编译为 .dll 文件并部署到 GAC。

SharePoint Foundation 中的事件处理程序可为在精细级别处理 SharePoint 事件提供极大的灵活性。

有关如何使用 Visual Studio 开发事件接收器的信息,请参阅创建事件处理程序

绑定事件处理程序

在编译事件处理程序代码并将其部署到 GAC 之后,需要将其绑定到接收器对象。通过术语"注册"还可以知道,绑定是一个将事件处理程序代码与对象类型相关联的过程。

可通过两种方法来绑定事件处理程序。一种方法是根据列表类型或内容类型在 SharePoint 功能内使用声明性 XML。有关详细信息,请参阅使用 SharePoint Features.xml 绑定事件处理程序

另一种方法是通过编写可在 SharePoint 对象模型中实现类的代码来实现事件处理程序绑定。有关详细信息,请参阅使用 SharePoint 对象模型绑定事件处理程序

请参阅

任务

如何:创建事件处理程序功能

概念

绑定 SharePoint Foundation 事件处理程序

创建事件处理程序

SharePoint Foundation 2010 的事件模型改进