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 事件宿主对象类型包括常见对象的实例,例如 SPSite、SPWeb、SPList 和 SPContentType。每种事件宿主类型都有可从中继承的特定事件接收器基类型,用于创建事件接收器集合。
有关宿主类型及其事件接收器类型的完整列表,请参阅 SharePoint 事件、事件接收器和事件宿主表和 SharePoint Foundation 事件目录。
事件接收器和处理事件
SharePoint Foundation 事件处理程序是自定义托管代码的编译模块,该代码的调用由您指定的事件触发。事件处理程序代码编译为 .dll 文件并部署到 GAC。
SharePoint Foundation 中的事件处理程序可为在精细级别处理 SharePoint 事件提供极大的灵活性。
有关如何使用 Visual Studio 开发事件接收器的信息,请参阅创建事件处理程序。
绑定事件处理程序
在编译事件处理程序代码并将其部署到 GAC 之后,需要将其绑定到接收器对象。通过术语"注册"还可以知道,绑定是一个将事件处理程序代码与对象类型相关联的过程。
可通过两种方法来绑定事件处理程序。一种方法是根据列表类型或内容类型在 SharePoint 功能内使用声明性 XML。有关详细信息,请参阅使用 SharePoint Features.xml 绑定事件处理程序。
另一种方法是通过编写可在 SharePoint 对象模型中实现类的代码来实现事件处理程序绑定。有关详细信息,请参阅使用 SharePoint 对象模型绑定事件处理程序。