演练:添加功能事件接收器
功能事件接收器是在 SharePoint 中发生下列功能相关事件之一时执行的方法:
安装功能。
激活功能。
停用功能。
移除功能。
本演练演示如何将事件接收器添加到 SharePoint 项目的功能中。 本演练将演示以下任务:
创建包含功能事件接收器的空项目。
处理 FeatureDeactivating 方法。
使用 SharePoint 项目对象模型将公告添加到“公告”列表中。
提示
对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您所使用的 Visual Studio 版本和您所使用的设置。有关更多信息,请参见 Visual Studio 设置。
系统必备
您需要以下组件来完成本演练:
支持的 Microsoft Windows 和 SharePoint 版本。 有关更多信息,请参见开发 SharePoint 解决方案的要求。
Visual Studio 2010.
创建功能事件接收器项目
首先,将创建一个项目来包含功能事件接收器。
创建包含功能事件接收器的项目
通过指向**“文件”菜单上的“新建”并选择“新建项目”,显示“新建项目”**对话框。
展开**“Visual C#”或“Visual Basic”下的“SharePoint”节点,然后单击“2010”**。
在**“模板”窗格中选择“空项目”**。
功能事件接收器将使用此项目类型,因为没有适用于它们的项目模板。
在**“名称”框中,键入 FeatureEvtTest,然后单击“确定”以显示“SharePoint 自定义向导”**。
在**“指定用于调试的网站和安全级别”**页上,输入要将新自定义字段项添加到的 SharePoint Server 网站的 URL,或者使用默认位置 (http://<system name>/)。
在**“此 SharePoint 解决方案的信任级别是什么?”部分,单击“部署为场解决方案”,然后单击“完成”**。
有关沙盒化解决方案与场解决方案的更多信息,请参见沙盒解决方案注意事项。
向功能中添加事件接收器
接下来,将向功能中添加事件接收器,并添加在停用功能时执行的代码。
向功能中添加事件接收器
通过右击“功能”节点并选择**“添加功能”**来创建一项功能。
请注意,一项名为 Feature1 的功能将出现在**“功能”**节点之下。
通过右击**“功能”节点中的“Feature1”并选择“添加事件接收器”**,将事件接收器添加到功能中。
这将在 Feature1 下添加一个代码文件。 在这种情况下,将该文件命名为 Feature1.EventReceiver.cs 或 Feature1.EventReceiver.vb,具体取决于项目的开发语言。
事件接收器类中包含四个充当事件的注释掉的方法。 用以下代码替换 FeatureDeactivating 方法:
Public Overrides Sub FeatureDeactivating(ByVal properties As SPFeatureReceiverProperties) Try ' Get reference to SharePoint site. Dim site As SPSite = New SPSite("https://localhost") Dim web As SPWeb = site.OpenWeb("/") ' Get reference to Announcements list. Dim announcementsList As SPList = web.Lists("Announcements") ' Add new announcement to Announcements list. Dim oListItem As SPListItem = announcementsList.Items.Add oListItem("Title") = ("Deactivated Feature: " + properties.Definition.DisplayName) oListItem("Body") = (properties.Definition.DisplayName + (" was deactivated on: " + DateTime.Now.ToString)) oListItem.Update() Catch e As Exception Console.WriteLine(("Error: " + e.ToString)) End Try End Sub
public override void FeatureDeactivating(SPFeatureReceiverProperties properties) { try { // Get reference to SharePoint site. SPSite site = new SPSite("https://localhost"); SPWeb web = site.OpenWeb("/"); // Get reference to Announcements list. SPList announcementsList = web.Lists["Announcements"]; // Add new announcement to Announcements list. SPListItem oListItem = announcementsList.Items.Add(); oListItem["Title"] = "Deactivated Feature: " + properties.Definition.DisplayName; oListItem["Body"] = properties.Definition.DisplayName + " was deactivated on: " + DateTime.Now.ToString(); oListItem.Update(); } catch (Exception e) { Console.WriteLine("Error: " + e.ToString()); } }
测试功能事件接收器
接下来,将停用功能,以测试 FeatureDeactivating 方法是否向 SharePoint 公告列表中输出公告。
测试功能事件接收器
将项目的**“活动部署配置”属性设置为无激活**。
设置此属性可防止在 SharePoint 中激活功能,并且您可以调试功能事件接收器。 有关更多信息,请参见调试 SharePoint 解决方案。
按 F5 运行项目,并将其部署到 SharePoint。
在 SharePoint 网页顶部,单击**“网站操作”按钮,然后单击“网站设置”**。
在**“网站设置”页的“网站操作”部分下,单击“管理网站功能”**链接。
在**“网站功能”页中,单击“FeatureEvtTest Feature1”功能旁边的“激活”**按钮。
在**“网站功能”页中,单击“FeatureEvtTest Feature1”功能旁边的“停用”**按钮。 单击确认链接以停用功能。
单击导航栏上的**“公告”**链接。
请注意,停用功能之后,一个公告将出现在**“公告”**列表中。