演练:添加功能事件接收器

功能事件接收器是在 SharePoint 中发生下列功能相关事件之一时执行的方法:

  • 安装功能。

  • 激活功能。

  • 停用功能。

  • 移除功能。

本演练演示如何将事件接收器添加到 SharePoint 项目的功能中。本演练将演示以下任务:

  • 创建包含功能事件接收器的空项目。

  • 处理 FeatureDeactivating 方法。

  • 使用 SharePoint 项目对象模型将公告添加到“公告”列表中。

说明说明

对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您所使用的 Visual Studio 版本和您所使用的设置。有关更多信息,请参见 Visual Studio 设置

系统必备

您需要以下组件来完成本演练:

创建功能事件接收器项目

首先,将创建一个项目来包含功能事件接收器。

创建包含功能事件接收器的项目

  1. 在菜单栏上,依次选择 *** 文件 ***新建项目 显示 *** 新项目 *** 对话框。

  2. 外接 *** SharePoint *** 节点。*** visual C# *** 或 ***** Visual Basic *****下,然后选择 *** 2010年 *** 节点。

  3. *** 模板 *** 窗格中,选择 *** SharePoint 2010项目 *** 模板。

    因为它们没有项目模板,所需功能事件接收器使用此项目类型。

  4. 名称 框中,键入FeatureEvtTest,然后选择 *** 好 *** 按钮显示 *** SharePoint自定义向导 ***

  5. 在**“指定用于调试的网站和安全级别”**页上,输入要将新自定义字段项添加到的 SharePoint Server 网站的 URL,或者使用默认位置 (http://<system name>/)。

  6. *** 什么是此SharePoint解决方案的信任级别? *** 部分中,选择 *** 部署为场解决方案 *** 选项按钮。

    有关沙盒化解决方案与场解决方案的更多信息,请参见沙盒解决方案注意事项

  7. 选择 *** 完成 *** 按钮将通知名为Feature1的函数显示在 *** 功能 *** 节点下。

向功能中添加事件接收器

接下来,将向功能中添加事件接收器,并添加在停用功能时执行的代码。

向功能中添加事件接收器

  1. 打开功能节点的快捷菜单,然后选择 *** 添加功能 *** 创建功能。

  2. *** 功能 *** 节点下,打开 ***** Feature1 *****的快捷菜单,然后选择 *** 添加事件接收器 *** 将事件接收器添加到该功能。

    这将在 Feature1 下添加一个代码文件。在这种情况下,将该文件命名为 Feature1.EventReceiver.cs 或 Feature1.EventReceiver.vb,具体取决于项目的开发语言。

  3. 如果您的项目中 Visual C#中,将下面的代码添加到事件接收器的顶部,如果它已不存在:

    using System;
    
  4. 事件接收器选件类包含作为事件的多个注释掉的方法。用以下代码替换 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 公告列表中输出公告。

测试功能事件接收器

  1. 设置项目的 *** 活动部署配置 *** 属性的值设置为 *** 无激活 ***

    设置此属性可防止在 SharePoint 中激活功能,并且您可以调试功能事件接收器。有关更多信息,请参见调试 SharePoint 解决方案

  2. 选择 *** F5 *** 键运行项目并将其部署到SharePoint。

  3. 在SharePoint网页顶部,打开 *** 站点事件 *** 菜单,然后选择 *** 网站设置 ***

  4. *** 网站设置 *** 页的 *** 站点事件 *** 部分下,选择 *** 管理网站功能 *** 链接。

  5. *** 功能 *** 页,请在 *** FeatureEvtTest Feature1 *** 功能旁边的下 *** 激活 *** 按钮。

  6. *** 功能 *** 页,请在 *** FeatureEvtTest Feature1 *** 功能旁边的下 *** 停用 *** 按钮,然后选择 *** 停用该功能 *** 确认链接停用功能。

  7. 选择 主页 按钮。

    请注意,停用功能之后,一个公告将出现在**“公告”**列表中。

请参见

任务

如何:创建事件接收器

其他资源

开发 SharePoint 解决方案