共用方式為


逐步解說:新增功能事件接收器

功能事件接收器是在 SharePoint 中發生下列其中一個與功能的相關事件時執行的方法:

  • 安裝功能。

  • 啟動功能。

  • 停用功能。

  • 移除功能。

本逐步解說示範如何將事件接收器加入至 SharePoint 專案中的功能。 其中將示範下列工作:

  • 建立具有功能事件接收器的空專案。

  • 處理 FeatureDeactivating 方法。

  • 使用 SharePoint 專案物件模型將公告加入至公告清單。

注意事項注意事項

您的電腦可能會在下列說明中,以不同名稱或位置顯示某些 Visual Studio 使用者介面項目。 您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。 如需詳細資訊,請參閱 Visual Studio 設定

必要條件

您需要下列元件才能完成此逐步解說:

建立功能事件接收器專案

首先,建立專案來包含功能事件接收器。

若要建立具有功能事件接收器的專案

  1. 指向 [檔案] 功能表上的 [新增],然後選取 [新增專案],顯示 [新增專案] 對話方塊。

  2. 展開 [Visual C#] 或 [Visual Basic] 底下的 [SharePoint] 節點,然後按一下 [2010]。

  3. 在 [範本] 窗格中,選取 [空專案]。

    這是功能事件接收器的專案類型,因為功能事件接收器沒有專案範本。

  4. 在 [名稱] 方塊中輸入 FeatureEvtTest,然後按一下 [確定] 以顯示 [SharePoint 自訂精靈]。

  5. 在 [指定網站和安全性層級進行偵錯] 頁面上,輸入您想要加入新自訂欄位項目之 SharePoint 伺服器網站的 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. 按一下巡覽列中的 [公告] 連結。

    請注意,在停用功能之後,一項公告會出現在 [公告] 清單中。

請參閱

工作

HOW TO:建立事件接收器

其他資源

開發 SharePoint 方案