MOSS 2007中的Master Page和在ASP.net中使用的Master Page是一样的.它们定义了网站的LOOK and Feel以及标准的行为,使得定制非常容易. Page layout的概念类似于ASP.net 2.0中的Content Page,它指向一个Master Page并且实现Content Placeholders 的内容.默认的情况下,MOSS 2007WSS 3.0中使用的master page 是站点范围的.也就是说当改变master page,他影响的是一个站点内的所以页面.Master pages 由两个动态的tokens引用.

1. Two Dynamic Tokens

1.1 ~masterurl/default.master

这个token 用于一个站点的所有FormsViews的外观,通常这些页面位于_layouts 目录.这个master pageSharepoint Designer中被称为“Default master page”,Site Settings\Look and Feel\Site Master Page Settings”中被称为“System Master Page”,这个master pagepage layout页面中的使用方法如下:

language="C#" MasterPageFile="~masterurl/default.master",sharepoint 加载页面时,这个token “~masterurl/default.master”SPWebMasterUrl属性替换.为了给这个token指定一个master page,可以在浏览器中导航到Site Settings\ Look and Feel\Site Master Page Settings, “System master page”选择一个master file,如图所示:

1.2 ~masterurl/custom.master

这个token用于站点内的所有publishing 页面.Sharepoint Designer中被称为“Custom master page”,“Site Settings\Look and Feel\Site Master Page Settings”中被称为“Site Master page”.当打开DefaultLayout.aspx页面时,可以看到如下的代码:

Page language="C#" MasterPageFile="~masterurl/custom.master"

在运行的时候,SPWebCustomMasterUrl的属性值代替.

可以在浏览器中改变给这个token指定的master page.方法是在Site Settings\ Look and Feel\Site Master Page Settings.“Site Master Page”下拉列表中选择.如下图所示:

 

此外,这些master page tokens可以在Sharepoint Designer中通过在master page 上右击选择“Set as Default master page” or “Set as custom master page”设置.如图所示:

 

2. Static Tokens

WSS 3.0站点有两个静态的tokens.如果自己的master page 在站点的Master page gallery ,可以通过在页面中加入MasterPageFile=“~site/xxx.master”来使用这个master page. 如果master page定义在根站点的master page gallery ,可以在页面中这样引用这个master page MasterPageFile=“~sitecollection/xxx.master”

DefaultPageLayout.aspx and Page Layouts

DefaultLayout看起来好像是一个特殊的layout page,为网站所有的publishing 页面定义了默认的layout.有意思的事情是当你检查所有的page layout aspx文件的MasterPageFile属性时,只有DefaultLayout.aspx包含着MasterPageFile 属性,其值为“~masterurl/custom.maseter”. DefaultLayout.aspx继承自Microsoft.SharePoint.WebPartPages.WebPartPage,但是其它包含你自己创建的page layoutspage layout页面则继承自Microsoft.SharePoint.Publishing.PublishingLayoutPage.

 

所以我猜想PublishingLayoutPage类和DefaultLayout.aspx有一些关系,至少DefaultLayout.aspxmaster page将被所有继承自PublishingLayoutPagepage layouts 所复用.所以如果想创建一个使用另一个而不是custom master page master page 的页面,就需要把基类PublishingLayoutPage改为WebPartPage 并且设置MasterPageFile属性.