将现有母版页升级到 SharePoint Foundation 母版页
上次修改时间: 2015年3月9日
适用范围: SharePoint Foundation 2010
本文内容
服务器功能区上的控件
添加内容占位符
添加服务器功能区
在滚动时保持服务器功能区的位置
向母版页中添加控件
Microsoft SharePoint Foundation 2010 的用户界面 (UI) 发生了重大变化,其中包括添加了服务器功能区。默认情况下,v4.master 页包含服务器功能区。许多以前位于菜单和工具栏中的命令现在都位于服务器功能区内。因此,如果您的现有母版页不包含服务器功能区,许多命令都将不可用。本主题介绍如何添加服务器功能区以及在 SharePoint Foundation 2010 中正确呈现现有母版页所需的任何新控件或内容占位符。
先决条件
Microsoft SharePoint Foundation 2010
服务器功能区上的控件
以前包含在默认母版页中的一些控件已移到新的服务器功能区 UI 中。由于这些控件现在位于服务器功能区内,因此如果您计划使用服务器功能区功能更新现有母版页,则需要从现有母版页中移除以下控件。在将服务器功能区合并到母版页时,将会添加这些控件。
发布控制台 - <PublishingConsole:Console>
网站操作菜单 - <PublishingSiteAction:SiteActionMenu>
注册和登录控件
重要信息 |
---|
如果使用自定义注册控件,则可以根据布局,将该控件移入或移出服务器功能区。 |
添加内容占位符
必须确保新的 ContentPlaceHolder 控件存在,才能更新母版页以使其与 SharePoint Foundation 2010 兼容。下表列出了更新母版页以使其与 SharePoint Foundation 2010 兼容所需的所有占位符。
重要信息 |
---|
PlaceHolderTitleAreaClass 占位符现在位于 head 标记内。在内容标记内向此占位符中添加 WebPartZone 的任何自定义操作都将导致页面出错。 |
占位符控件 |
说明 |
新增 |
---|---|---|
<asp:ContentPlaceHolder id="PlaceHolderQuickLaunchTop" runat="server"> |
"快速启动"菜单的顶部。 |
是 |
<asp:ContentPlaceHolder id="PlaceHolderQuickLaunchBottom" runat="server"> |
"快速启动"菜单的底部。 |
是 |
<asp:ContentPlaceHolder id="PlaceHolderPageTitle" runat="server"/> |
网站的标题。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderAdditionalPageHead" runat="server"/> |
页面标题部分中的占位符,用于向页面中添加额外组件,例如 ECMAScript(JavaScript、JScript) 和级联样式表 (CSS)。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderBodyAreaClass" runat="server"/> |
正文区域的类。 |
否 |
<asp:ContentPlaceHolder ID="SPNavigation" runat="server"> |
用于附加页编辑控件的控件。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderSiteName" runat="server"> |
当前页所在的网站的名称。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderPageTitleInTitleArea" runat="server" /> |
页面标题,显示在页面上的标题区域。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderPageDescription" runat="server"/> |
当前页面的描述。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderSearchArea" runat="server"> |
搜索控件的页面部分。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderGlobalNavigation" runat="server"> |
页面上的痕迹导航控件。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderTitleBreadcrumb" runat="server"> |
痕迹导航控件的痕迹导航文本。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderGlobalNavigationSiteMap" runat="server"> |
页面上全局导航中的子网站和同级网站的列表。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderTopNavBar" runat="server"> |
用于容纳顶部导航栏的容器。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderHorizontalNav" runat="server"> |
位于顶部导航栏内的导航菜单。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderLeftNavBarDataSource" runat="server" /> |
用于填充左侧导航栏的数据源的位置。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderCalendarNavigator" runat="server" /> |
当页面上的日历可见时使用的日期选取器。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderLeftNavBarTop" runat="server"/> |
左侧导航栏的顶部区域。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderLeftNavBar" runat="server"> |
快速启动栏。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderLeftActions" runat="server"> |
快速启动栏上方的附加对象。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderMain" runat="server"> |
页面的主要内容。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderFormDigest" runat="server"> |
存储页面格式摘要控件的容器。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderUtilityContent" runat="server"/> |
页面底部的附加内容。位于 form 标记外部。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderTitleAreaClass" runat="server"/> |
标题区域的类。现在位于 head 标记内。在内容标记内向此占位符中添加 WebPartZone 的任何自定义操作都将导致页面出错。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderPageImage" runat="server"/> |
此占位符不显示为 UI 的一部分,且必须存在以实现向后兼容性。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderTitleLeftBorder" runat="server"> |
此占位符不显示为 UI 的一部分,且必须存在以实现向后兼容性。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderMiniConsole" runat="server"/> |
此占位符不显示为 UI 的一部分,且必须存在以实现向后兼容性。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderTitleRightMargin" runat="server"/> |
此占位符不显示为 UI 的一部分,且必须存在以实现向后兼容性。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderTitleAreaSeparator" runat="server"/> |
此占位符不显示为 UI 的一部分,且必须存在以实现向后兼容性。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderNavSpacer" runat="server"> |
此占位符不显示为 UI 的一部分,且必须存在以实现向后兼容性。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderLeftNavBarBorder" runat="server"> |
此占位符不显示为 UI 的一部分,且必须存在以实现向后兼容性。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderBodyLeftBorder" runat="server"> |
此占位符不显示为 UI 的一部分,且必须存在以实现向后兼容性。 |
否 |
<asp:ContentPlaceHolder id="PlaceHolderBodyRightMargin" runat="server"> |
此占位符不显示为 UI 的一部分,且必须存在以实现向后兼容性。 |
否 |
添加服务器功能区
服务器功能区是 SharePoint Foundation UI 的新增内容。v4.master 页面中的 SPRibbonPeripheralContent 控件包含在 服务器功能区区域内呈现的内容。如果需要,可以将该内容移到服务器功能区之外。以下过程演示了用于向页面中添加服务器功能区的代码。
添加服务器功能区
打开母版页文件 (.master)。
复制以下代码并将其粘贴到 form 标记内以便向页面中添加服务器功能区。
重要信息 以下代码示例包含带注释的部分,您将在该部分复制并粘贴自定义母版页或 v4.master 页中的控件。如果不将全局导航部分内的任何 ContentPlaceholder 控件添加到服务器功能区中,则需要将其添加到页面中的其他位置。
<div id="s4-ribbonrow" class="s4-pr s4-ribbonrowhidetitle"> <div id="s4-ribboncont"> <SharePoint:SPRibbon runat="server" PlaceholderElementId="RibbonContainer" CssFile=""> <SharePoint:SPRibbonPeripheralContent runat="server" Location="TabRowLeft" CssClass="ms-siteactionscontainer s4-notdlg"> <%-- Insert the Site Actions Menu Here --%> </SharePoint:SPRibbonPeripheralContent> <%-- Insert the Global Navigation Here --%> <SharePoint:SPRibbonPeripheralContent runat="server" Location="TabRowRight" ID="RibbonTabRowRight" CssClass="s4-trc-container s4-notdlg"> <%-- Insert the Top-Right Corner Controls Here --%> </SharePoint:SPRibbonPeripheralContent> </SharePoint:SPRibbon> </div> <div id="notificationArea" class="s4-noti"> <%-- Notifications will appear in this div element. --%> </div> <asp:ContentPlaceHolder ID="SPNavigation" runat="server"> <SharePoint:DelegateControl runat="server" ControlId="PublishingConsole"> </SharePoint:DelegateControl> </asp:ContentPlaceHolder> <div id="WebPartAdderUpdatePanelContainer"> <asp:UpdatePanel ID="WebPartAdderUpdatePanel" UpdateMode="Conditional" ChildrenAsTriggers="false" runat="server"> <ContentTemplate> <WebPartPages:WebPartAdder ID="WebPartAdder" runat="server" /> </ContentTemplate> <Triggers> <asp:PostBackTrigger ControlID="WebPartAdder" /> </Triggers> </asp:UpdatePanel> </div> </div>
保存母版页文件。
在滚动时保持服务器功能区的位置
在添加服务器功能区时,对母版页进行以下更改可防止服务器功能区随页面滚动。
在滚动时保持服务器功能区的位置
将网站的内容移到以下 div 元素内。
重要信息 s4-workspace div 元素是编辑过程中的必需项。如果此元素不存在,则会出现脚本错误。
<div id="s4-workspace"> <div id="s4-bodyContainer"> Content </div> </div>
备注
如果您的页面具有固定宽度,则应向 s4-workspace div 元素中添加 s4-nosetwidth 类。更新后的 div 元素应如下所示。<div id="s4-workspace" class="s4-nosetwidth">
将网站的标题区域移到具有以下 ID 的 div 元素内。
<div id="s4-titlerow"> Title Area </div>
将正文标记和级联样式表 (CSS) 规则更新为不滚动。正文标记和规则应如下所示。
<body scroll="no" ...> Body Content </body>
body { overflow: hidden; ... }
向母版页中添加控件
有一组控件是 SharePoint Foundation 正常运行所必需的。它们是 SPPageManager、ScriptManager 和 ScriptLink 控件。
SPPageManager 控件管理页面上的通信。该控件负责在服务器功能区、工具栏和页面上的其他控件之间传送命令。
ScriptManager 对象是一个 Microsoft ASP.NET 控件,它用于管理页面上的所有 ECMAScript(JavaScript、JScript)。由于 JavaScript 在 SharePoint Foundation 中的广泛使用,页面上必须存在 ScriptManager 的实例。
ScriptLink 控件是在页面上添加对 JavaScript 的引用所必需的。该控件用于呈现指向页面上的 JavaScript 的链接。
向页面中添加控件
打开母版页文件。
复制并粘贴以下代码以便向页面中添加 ScriptManager 控件。它必须位于 form 标记内、但位于服务器功能区之前。
<asp:ScriptManager id="ScriptManager" runat="server" EnablePageMethods="false" EnablePartialRendering="true" EnableScriptGlobalization="false" EnableScriptLocalization="true" />
复制并粘贴以下代码以便向页面中添加 SPPageManager 控件。它必须位于 head 标记内。
<SharePoint:SPPageManager runat="server" />
复制并粘贴以下代码以便向页面中添加 ScriptLink 控件。它必须位于 head 标记内。
<SharePoint:ScriptLink defer= "true" runat="server"/>
保存母版页文件。