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

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

  • 安装功能。

  • 激活功能。

  • 停用功能。

  • 移除功能。

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

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

  • 处理 FeatureDeactivating 方法。

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

提示

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

系统必备

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

创建功能事件接收器项目

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

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

  1. 通过指向**“文件”菜单上的“新建”并选择“新建项目”,显示“新建项目”**对话框。

  2. 展开**“Visual C#”“Visual Basic”下的“SharePoint”节点,然后单击“2010”**。

  3. 在**“模板”窗格中选择“空项目”**。

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

  4. 在**“名称”框中,键入 FeatureEvtTest,然后单击“确定”以显示“SharePoint 自定义向导”**。

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

  6. 在**“此 SharePoint 解决方案的信任级别是什么?”部分,单击“部署为场解决方案”,然后单击“完成”**。

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

向功能中添加事件接收器

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

向功能中添加事件接收器

  1. 通过右击“功能”节点并选择**“添加功能”**来创建一项功能。

    请注意,一项名为 Feature1 的功能将出现在**“功能”**节点之下。

  2. 通过右击**“功能”节点中的“Feature1”并选择“添加事件接收器”**,将事件接收器添加到功能中。

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

  3. 事件接收器类中包含四个充当事件的注释掉的方法。 用以下代码替换 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 解决方案