转:http://***/html/blogs/20130407/1381.htm

最近做了一个项目管理系统,要求用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(停用某个功能前引发的事件),这两个事件对应的方法为
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 = ;

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 = ;

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 开发最佳实践   这本书



Sharepoint 2010 用VS定制Master,并且每个Web应用同一个Master的更多相关文章

  1. SharePoint 2010 最佳实践学习总结------第1章 SharePoint Foundation开发基础

    ----前言 这段时间项目出在验收阶段,不是很忙,就潜心把SharePoint学一下,不求有多深刻,初衷只是先入门再说.后续会发布一系列的学习总结.主要学习的书籍为<SharePoint2010 ...

  2. Using SharePoint 2010 dialogs

    转:http://www.techbubbles.com/sharepoint/using-sharepoint-2010-dialogs/ SharePoint 2010 dialogs are J ...

  3. SharePoint 2010升级到sharePoint 2013后,人员失去对网站的权限的原因及解决方法。The reason and solution for permission lost after the upgrading

    昨天碰到了一个问题,一个网站在从SharePoint 2010升级到SharePoint 2013后,人员都不能登录了,必须重加赋权,人员才能登录,这样非常麻烦. 原因:是认证方式的问题.在Share ...

  4. [SharePoint 2010]关于基于声明(Claims)的用户认证模式

    转:http://blog.csdn.net/zw_2011/article/details/7417132 SharePoint 2010在用户认证模式上,较之以前的版本有了非常大的改变.在Shar ...

  5. sharepoint 2010 创建自定义的ASP.NET Web Service (上)

    项目背景 根据客户需求在SharePoint 2010 中创建自定义的ASP.NET Web Service可以分为3种方式(我所知道的).废话少说,下面一一列举: 创建方式 MSDN 官方博客自己的 ...

  6. sharepoint 2010 页面添加footer方法 custom footer for sharepoint 2010 master page

    转:http://blog.csdn.net/chenxinxian/article/details/8720893 在sharepoint 2010的页面中,我们发现,没有页尾,如果我们需要给页面添 ...

  7. SharePoint 2010 master page 控件介绍(1)

    转:http://blog.csdn.net/lgm97/article/details/6409204 以下所有的内容都是根据Randy Drisgill (MVP SharePoint Serve ...

  8. SharePoint 2010自定义母版页小技巧——JavaScript和CSS引用

    通常在我们的项目中,都会涉及到母版页的定制.并且必不可少的,需要配合以一套自己的JavaScript框架和CSS样式.你有没有遇到过这样的情况呢,在开发环境和UAT时都还算顺利,但是当最终部署到生产服 ...

  9. 使用SharePoint 2010 母版页

    SharePoint 2010母版页所用的还是ASP.NET 2.0中的技术.通过该功能,实现了页面框架布局与实际内容的分离.虽然在本质上自定义母版页的过程和以前版本的SharePoint大致相同,但 ...

随机推荐

  1. OpenJudge/Poj 1458 Common Subsequence

    1.链接地址: http://poj.org/problem?id=1458 http://bailian.openjudge.cn/practice/1458/ 2.题目: Common Subse ...

  2. 通过正则表达式获取url中参数

    url: http://xxxx.com?name=魅力&id=123 js中: var name = getUrlParam("name"); /*通过正则获取url中的 ...

  3. Application.StartupPath同System.Environment.CurrentDirectory区别

    System.Windows.Forms.Application.StartupPath:获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称. System.Environment.Curr ...

  4. off() 方法 与 unbind() 方法移除绑定事件的处理程序。one()函数用于为每个匹配元素的一个或多个事件绑定一次性事件处理函数

    off() 方法移除用.on()绑定的事件处理程序. unbind() 方法移除用.bind()绑定的事件处理程序. 从 jQuery 1.7开始, .on() 和 .off()方法是最好的元素上附加 ...

  5. Mysql,Oracle,Java数据类型对应

    Mysql Oracle Java BIGINT NUMBER(19,0) java.lang.Long BIT RAW byte[] BLOB BLOB RAW byte[] CHAR CHAR j ...

  6. log4j配置文件写法

    ### direct log messages to stdout ###log4j.rootLogger=DEBUG,stdoutlog4j.appender.stdout=org.apache.l ...

  7. dtv_driver.ko

            替换dtv_driver.ko .步骤:         shell@android:/ # get_rootfs.sh                                 ...

  8. 备忘·添加SublimeText3右键菜单

    因为用的sublimeText3是免安装版,打开未关联文件,略有麻烦,所以搜了一下,发现几种解决办法,其中INF文件的方法很喜欢,备份下 [Version] Signature="$Wind ...

  9. [XJOI NOI02015训练题7] B 线线线 【二分】

    题目链接:XJOI - NOI2015-07 - B 题目分析 题意:过一个点 P 的所有直线,与点集 Q 的最小距离是多少?一条直线与点集的距离定义为点集中每个点与直线距离的最大值. 题解:二分答案 ...

  10. c#中怎么删除一个非空目录

    System.IO.Directory.Delete(@"C:\abc\",true)