共用方式為


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

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

  • 已安裝功能。

  • 已啟動功能。

  • 已停用功能。

  • 已移除功能。

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

  • 使用功能事件接收器建立空白專案。

  • 處理 FeatureDeactivating 方法。

  • 使用 SharePoint 專案物件模型,將公告新增至公告清單。

    注意

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

必要條件

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

  • 支援的 Microsoft Windows 和 SharePoint 版本。

  • Visual Studio。

建立功能事件接收者專案

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

若要使用功能事件接收器建立專案

  1. 在功能表列上,選擇 [檔案]>[新增]>[專案],以顯示 [新增專案] 對話方塊。

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

  3. 在 [範本] 窗格中,選擇 [SharePoint 2010 專案] 範本。

    因為功能事件接收器沒有專案範本,所以您可以針對功能事件接收器使用這個專案類型。

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

  5. 在 [指定網站和安全性層級進行偵錯] 頁面上,輸入您要新增自訂欄位項目的 SharePoint 伺服器網站 URL,或使用預設位置 (http://<system name>/)。

  6. 在 [此 SharePoint 解決方案的信任層級為何?] 區段中,選擇 [部署為陣列方案] 選項按鈕。

    如需有關沙箱化方案和伺服器陣列方案的詳細資訊,請參閱沙箱化解決方案考量

  7. 選擇 [完成] 按鈕,然後注意到名為 Feature1 的功能會出現在 [功能] 節點底下。

將事件接收器新增至功能

接下來,將事件接收器新增至功能,並在停用功能時,新增執行的程式碼。

將事件接收器新增至功能

  1. 開啟 [功能] 節點的捷徑功能表,然後選擇 [新增功能] 來建立功能。

  2. 在 [功能] 節點下,開啟 Feature1 的快捷方式功能表,然後選擇 [新增事件接收器] 將事件接收器新增至功能。

    這會在 Feature1 底下新增程式碼檔案。 在此情況下,其會根據專案的開發語言,命名為 Feature1.EventReceiver.csFeature1.EventReceiver.vb

  3. 如果您的專案是以 Visual C# 撰寫的,請在事件接收器頂端新增下列程式碼 (如果尚未存在):

    using System;
    
  4. 事件接收者類別包含數個做為事件的註解化方法。 將 FeatureDeactivating 方法取代為以下內容:

    public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
    {
        try
        {
            // Get reference to SharePoint site.
            SPSite site = new SPSite("http://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. 選擇 [首頁] 按鈕。

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