SharePoint Foundation 2010 中的新事件

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

适用范围: SharePoint Foundation 2010

本文内容
列表上新加的 Add 和 Delete 事件
SharePoint 网站上的新增 Add 事件
新的同步 After 事件

为了提高性能和灵活性,已经向 Microsoft SharePoint Foundation 2010 开发人员平台中添加了几个新事件。有关包括标注的所有 SharePoint Foundation 事件(这些事件标注为 SharePoint Foundation 2010 中的新增事件)的目录,请参阅SharePoint Foundation 事件目录

列表上新加的 Add 和 Delete 事件

为 SharePoint 列表提供了两个新的 Add 事件,即,用于 SPList 对象的事件:

Add 事件接受通过 SPListEventProperties 提供的属性,并在创建新列表时引发。

ListAdding 事件允许用户取消列表创建。但要注意,当您设置网站模板或网站定义时,会建议您不要取消列表创建。还请注意,当您在 Microsoft.SharePoint.Deployment 命名空间中使用 API 还原网站时,会发生 ListAdding 事件。

在部署解决方案时,您可以设置允许您忽略在部署期间引发的事件的选项。当列表被回收后且正在进行还原时,也会发生 ListAdding 事件。这种行为与 SharePoint 列表通常的工作方式是一致的。SPListEventProperties 有两个额外的属性:TemplateIdFeatureId,它们作为参数传递,因此使用 ListAdding 事件的开发人员可以确定要创建哪种类型的列表。

除了这些 Add 事件,还有两个 Delete 事件也添加到 SharePoint 列表中:

这些 Delete 事件允许您在操作中的任何时刻取消列表删除操作。当您取消删除操作时,会通过接口传递回一条错误消息,并引发一个异常。注意,回收列表时(即使该列表本身在技术上并未被删除),也会发生 Delete 事件。此行为与 SharePoint 列表项通常的工作方式是一致的。

在删除更高级别的对象时,Delete 事件不会发生在范围较窄的对象上。例如,如果 Delete 事件发生在网站级,则不会引发范围更窄的事件(例如那些发生在各个列表上的事件)。因此,在对删除事件进行编码时,必须使事件保持正确的范围级别。还要注意的是,如果某人删除独立列表文件夹(例如,网站内部的 Lists 文件夹),则没有可截获的事件,也不会发生 List 事件。

SharePoint 网站上的新增 Add 事件

其他新增事件在您创建 SharePoint 网站(SPWeb 实例)时提供了更多的控制和灵活性。但要注意,创建 SharePoint 网站涉及两个独立的步骤:首先,将一个网站添加到网站集(SPSite 实例)中。此时,网站本身和一个空文件夹差不多,只具有一组属性。然后,在第二个步骤中,设置网站(也就是应用 Web 模板),接着各个项(如列表、文件和其他内容对象)被实例化,并根据指定的站点定义进行组织。

因为大多数重要的活动发生在设置阶段,这些与网站相关的新事件与添加和设置网站的过程相关联:

在创建新网站之前会引发 WebAdding 事件,因此,如果创建操作被取消,则不会创建任何 SharePoint 网站,也不会启动设置过程。您可以使用 WebAdding 事件执行条件验证等活动,以确保 URL 是有效的或创建网站的用户拥有适当的凭据。

在网站完全设置好并且设置过程已完成之后,会发生 WebProvisioned 事件。此事件可配置为在同步或异步模式下运行。可使用此事件完成开发操作,例如,将 Web 部件添加到网站中。

新的同步 After 事件

同步的 after 事件旨在满足只能由异步事件部分满足的需要,即,能够在列表项已提交至内容数据库、但在用户实际看到列表项之前对该列表项执行操作。当发生同步 after 事件时,将在事件处理程序放弃控制之前处理该事件。

备注

默认同步行为对于 before 事件是同步的,对于 after 事件是异步的。

您还可以使用 SPEventReceiverDefinition 基类的一个新属性,该属性名为 Synchronization,它具有 get 和 set 方法,用于检索和设置 SPEventReceiverSynchronization 枚举值。此枚举提供名为 Default 的值,以支持向后兼容性。

请参阅

概念

SharePoint Foundation 2010 的事件模型改进

其他资源

SharePoint Foundation 2010 中的事件