在上一篇“建立與SharePoint 2010風格一致的下拉式功能表”文章中,示範了如何添加一個額外的菜單到頁面頂端,並使其的樣式風格與SharePoint 2010內建的菜單保持一致。如果只需要建立一個子功能表項目固定的菜單,那麼這篇文章裡面的包含的內容已經足夠了。但是如果在設計這個菜單的時候,我們並不確定需要向菜單中加入什麼功能表項目呢?
在SharePoint公司專屬應用程式開發的過程中,有時候我們會希望能夠建立一個可擴充的菜單。最開始的時候,開發人員在SharePoint網站頁面的某個位置添加一個菜單,之後,就允許其他開發人員使用一種標準的擴充方式,先這個菜單中添加其他子功能表項。
實際上,SharePoint已經內建了一種這樣的機制。如果你對Custom Action有瞭解,就應該知道,SharePoint開發人員可以通過在Feature中定義Custom Action,就可以向SharePoint內建的UI介面上添加額外的功能表項目、按鈕、Ribbon操作控制項等等UI元素。是否可以讓開發人員通過統一的Custom Action機制,向自訂的菜單中添加功能表項目呢?答案是可以。
在建立自訂菜單的時候,除了添加MenuItemTemplate(表示功能表項目)和SubMenuTemplate(表示二級菜單)之外,還可以添加FeatureMenuTemplate。FeatureMenuTemplate類似於定義了一個菜單預留位置,並定義了這個菜單預留位置的Location和Group ID。之後開發人員可以通過Custom Action,使用自訂的Location和Group ID,向這個菜單預留位置中添加功能表項目。
在下面的代碼中,就添加了一個FeatureMenuTemplate,它的Location是“HP.ExtendedMenu”,Group ID是“TopToolsMenu”。
以後,其他開發人員就可以使用標準的SharePoint Feature架構中的Custom Action元素,來向這個位置添加想要的功能表項目。如下面截圖所示,我們定義了兩個Custom Action,第一個是“About this Site”,第二個是“GetIT Support”。
將包含上面這兩個Custom Action元素的Feature部署到SharePoint系統中,並在網站上啟用後,就能看到它們會出現在我們想要它們出現的菜單中。
通過使用Feature Custom Action機制,我們就可以讓自訂菜單具有更好的靈活性和擴充性。比如,在設計自訂主版頁面時,我們就可以將自訂菜單控制項添加到主版頁面上,而開發人員可以在項目後續通過Custom Action機制向菜單中不斷的添加所需的功能表項目。
查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/web/sharepoint/