Sharepoint 2010 用VS定制Master,并且每个Web应用同一个Master
生活随笔
收集整理的這篇文章主要介紹了
Sharepoint 2010 用VS定制Master,并且每个Web应用同一个Master
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
????? 最近做了一個項目管理系統,要求用Sharepoint,有個特別的功能就是通過創建出來的子站點要求應用同一個Master頁面,并且每次修改Master頁面都要同時修改所有的子站點,有這個需求就限制了Master頁面只能有一個,通過查找資料,最終找到了相應的解決方案,用VS定制Master頁面,通過Feature EventReceive 和 EventReceive兩個事件處理程序來完成操作,下面一步一步來介紹開發過程。
項目整體結構如下圖所示。一、創建兩個Module,ModuleMasterpage和ModuleStyle 修改ModuleMasterPage的Xml,修改格式如下 <Module Name="ModuleMasterPage" Path="ModuleMasterPage" Url="_catalogs/masterpage"><File Url="CustomMasterPage.master" Type="GhostableInLibrary"><Property Name="UIVersion" Value="4"/><Property Name="ContentTypeId" Value="0x010105"/></File></Module> 上面的Url 通過SharePoint Designer可以找到MasterPage所在的位置,之后把對應的路徑寫上就OK了,部署解決方案后可以到Designer里查看。 修改ModuleStyle <Module Name="ModuleStyle" Url="Style Library"><File Path="ModuleStyle\CustomCss.css" Url="ModuleStyle/CustomCss.css" /></Module> 上面的Url對應 樣式庫 通過Designer查看,原理同上 二、創建Master 把Sample.txt 修改成 CustomMasterPage.master,通過Designer打開V4.master,之后復制所有內容到?CustomMasterPage.master上面,根據不同的需求進行定制就OK了,定制完成后Deploy。 三、創建?Feature EventReceive ,啟用?FeatureActivated(激活某個功能后引發的事件) 和?FeatureDeactivating(停用某個功能前引發的事件),這兩個事件對應的方法為 View Code public override void FeatureActivated(SPFeatureReceiverProperties properties){SPSite site = properties.Feature.Parent as SPSite;if (site != null){string url = site.ServerRelativeUrl;foreach (SPWeb web in site.AllWebs){web.MasterUrl = url + "_catalogs/masterpage/CustomMasterPage.master";web.CustomMasterUrl = url + "_catalogs/masterpage/CustomMasterPage.master";web.AlternateCssUrl = url + "Style Library/ModuleStyle/CustomCss.css";web.UIVersion = 4;web.Update();}}}public override void FeatureDeactivating(SPFeatureReceiverProperties properties){SPSite site = properties.Feature.Parent as SPSite;if (site != null){string url = site.ServerRelativeUrl;foreach (SPWeb web in site.AllWebs){web.MasterUrl = url + "_catalogs/masterpage/V4.master";web.CustomMasterUrl = url + "_catalogs/masterpage/V4.master";web.AlternateCssUrl = "";web.SiteLogoUrl = "";web.UIVersion = 4;web.Update();}}} 這兩個方法比較簡單,就不做詳細介紹了 四、創建 EventReceive?EventReceiverChildSiteCreated,子站點創建后應用Master /// <summary>/// 已配置網站./// </summary>public override void WebProvisioned(SPWebEventProperties properties){base.WebProvisioned(properties);SPWeb web = properties.Web;SPWeb rootWeb = properties.Web.Site.RootWeb;web.MasterUrl = rootWeb.MasterUrl;web.CustomMasterUrl = rootWeb.CustomMasterUrl;web.AlternateCssUrl = rootWeb.AlternateCssUrl;web.Update();}
最后就是部署并激活Feature了,就這樣解決了用戶的要求,同時分享給大家了......
參考資料:Sharepoint 2010 開發最佳實踐?? 這本書
轉載于:https://www.cnblogs.com/Fengger/archive/2013/04/07/3003417.html
總結
以上是生活随笔為你收集整理的Sharepoint 2010 用VS定制Master,并且每个Web应用同一个Master的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: weevely-------linux中
- 下一篇: 腾讯、百度、阿里、微软面试题精选(不断更