功能事件接收器是在 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 伺服器網站的 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 Subpublic 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] 功能旁的 [停用] 按鈕。 按一下確認連結來停用功能。
按一下巡覽列中的 [公告] 連結。
請注意,在停用功能之後,一項公告會出現在 [公告] 清單中。
注意事項