博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sharepoint 2010 用VS定制Master,并且每个Web应用同一个Master
阅读量:5278 次
发布时间:2019-06-14

本文共 2844 字,大约阅读时间需要 9 分钟。

      最近做了一个项目管理系统,要求用Sharepoint,有个特别的功能就是通过创建出来的子站点要求应用同一个Master页面,并且每次修改Master页面都要同时修改所有的子站点,有这个需求就限制了Master页面只能有一个,通过查找资料,最终找到了相应的解决方案,用VS定制Master页面,通过Feature EventReceive 和 EventReceive两个事件处理程序来完成操作,下面一步一步来介绍开发过程。

项目整体结构如下图所示。
一、创建两个Module,ModuleMasterpage和ModuleStyle
修改ModuleMasterPage的Xml,修改格式如下
上面的Url 通过SharePoint Designer可以找到MasterPage所在的位置,之后把对应的路径写上就OK了,部署解决方案后可以到Designer里查看。
修改ModuleStyle
上面的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
///         /// 已配置网站.        ///         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

你可能感兴趣的文章
第十次ScrumMeeting博客
查看>>
iOS 9之3D Touch
查看>>
Apache CXF实现Web Service(3)——Tomcat容器和不借助Spring的普通Servlet实现JAX-RS(RESTful) web service...
查看>>
4. 垃圾回收- 4.3垃圾收集器
查看>>
练习1-17 编写一个程序,打印长度大于80个字符的所有输入行.
查看>>
php 设置
查看>>
各浏览器抗uaf机制
查看>>
将数字转化为电话号码(忽略全局属性)
查看>>
虚函数和抽象函数的区别
查看>>
栈应用-括号匹配
查看>>
【2040】反向输出序列
查看>>
hdu 1176 dp 数塔问题
查看>>
spark 编译
查看>>
运营商竞速搭建手机支出公司
查看>>
解决MySQL数据库作古掉以及谢绝任事的办法
查看>>
红杉资源出售麦考林29%股份套现1亿美元
查看>>
DB2 9 运用开发(733 测验)认证指南,第 1 部分: 数据库工具与编程办法(1)
查看>>
Informix IDS 11系统经管(918考试)认证指南,第 5 部分: 数据库做事器行使(5)
查看>>
Linux下Makefile学习笔记
查看>>
Centos6.5搭建bugzilla
查看>>