将现有母版页升级到 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 控件包含在 服务器功能区区域内呈现的内容。如果需要,可以将该内容移到服务器功能区之外。以下过程演示了用于向页面中添加服务器功能区的代码。

添加服务器功能区

  1. 打开母版页文件 (.master)。

  2. 复制以下代码并将其粘贴到 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>
    
  3. 保存母版页文件。

在滚动时保持服务器功能区的位置

在添加服务器功能区时,对母版页进行以下更改可防止服务器功能区随页面滚动。

在滚动时保持服务器功能区的位置

  1. 将网站的内容移到以下 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">

  2. 将网站的标题区域移到具有以下 ID 的 div 元素内。

    <div id="s4-titlerow"> 
      Title Area
    </div>
    
  3. 将正文标记和级联样式表 (CSS) 规则更新为不滚动。正文标记和规则应如下所示。

    <body scroll="no" ...>
      Body Content
    </body>
    
    body { overflow: hidden; ... }
    

向母版页中添加控件

有一组控件是 SharePoint Foundation 正常运行所必需的。它们是 SPPageManagerScriptManagerScriptLink 控件。

SPPageManager 控件管理页面上的通信。该控件负责在服务器功能区、工具栏和页面上的其他控件之间传送命令。

ScriptManager 对象是一个 Microsoft ASP.NET 控件,它用于管理页面上的所有 ECMAScript(JavaScript、JScript)。由于 JavaScript 在 SharePoint Foundation 中的广泛使用,页面上必须存在 ScriptManager 的实例。

ScriptLink 控件是在页面上添加对 JavaScript 的引用所必需的。该控件用于呈现指向页面上的 JavaScript 的链接。

向页面中添加控件

  1. 打开母版页文件。

  2. 复制并粘贴以下代码以便向页面中添加 ScriptManager 控件。它必须位于 form 标记内、但位于服务器功能区之前。

    <asp:ScriptManager id="ScriptManager" runat="server" EnablePageMethods="false" EnablePartialRendering="true" EnableScriptGlobalization="false" EnableScriptLocalization="true" />
    
  3. 复制并粘贴以下代码以便向页面中添加 SPPageManager 控件。它必须位于 head 标记内。

    <SharePoint:SPPageManager runat="server" />
    
  4. 复制并粘贴以下代码以便向页面中添加 ScriptLink 控件。它必须位于 head 标记内。

    <SharePoint:ScriptLink defer= "true" runat="server"/>
    
  5. 保存母版页文件。

请参阅

概念

母版页