如何:自定义移动主页

上次修改时间: 2011年2月2日

适用范围: SharePoint Foundation 2010

本主题概述自定义可供移动设备访问的 Microsoft SharePoint Foundation 主页的基本过程。有关详细过程,请参阅演练:自定义移动主页。有关如何自定义列表视图和表单网页的概述,请参阅如何:自定义移动列表视图和表单页

移动页呈现系统中详细介绍的一样,移动主页的页眉(标题)、正文(内容)和页脚(导航)区域中的每个控件都会启动一个调用链,该调用链最终会调用呈现移动网页的相应区域的 RenderingTemplate 对象。它几乎始终为具有分段 ID 的 RenderingTemplate。如果找不到名称匹配的 RenderingTemplate,则使用默认模板。这意味着,您可以自定义页眉、正文或页脚,方法是创建运行时将查找其 ID 的 RenderingTemplate

具体来说,运行时会查找具有以下格式的 RenderingTemplate ID:

IntendedPageUse_SiteTypeID_HomePage_PageArea

呈现模板分段 ID 中定义了占位符 IntendedPageUse、SiteTypeID 和 PageArea。有关移动网页的各个部分的详细信息,请参阅移动页的布局和分页

对于特定 IntendedPageUse、SiteTypeID 和 PageArea,如果未找到名称匹配的 RenderingTemplate,则会使用以下名称,其中用"Default"替换了 SiteTypeID:

IntendedPageUse_Default_HomePage_PageArea

例如,如果运行时正在查找 ID 为 WebPartMobile_STS_HomePage_Title 的 RenderingTemplate,则它将找不到(如果未添加具有该名称的自定义模板)。因此,它将使用 存在的 WebPartMobile_Default_HomePage_Title 来呈现 STS 站点的移动主页的页眉(标题)区域。

因此,如果希望自定义 STS 站点的移动主页的页眉呈现方式,可在部署到 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATES\ControlTemplates 的 .ascx 文件中创建 ID 为 WebPartMobile_STS_HomePage_Title 的 RenderingTemplate 元素。您不能修改 MobileDefaultTemplates.ascx 或 GbwMobileDefaultTemplates.ascx 文件。有关如何创建移动网页的自定义呈现模板的详细信息,请参阅本主题后面的过程和演练:自定义移动主页

现有 RenderingTemplate

下面列出了在安装 SharePoint Foundation 时 MobileDefaultTemplates.ascx 或 GbwMobileDefaultTemplates.ascx 中已存在的移动主页的 RenderingTemplate

  • Mobile_STS_HomePage_Title

  • Mobile_STS_HomePage_Contents

  • WebPartMobile_SGS_HomePage_Contents

  • WebPartMobile_STS_HomePage_Contents

您可以在自己的 ascx 文件中新建一个 RenderingTemplate 元素,使其与上述现有呈现模板之一具有相同的 ID,但是,如果您这样做,将有可能破坏在 SharePoint Foundation 中部署的依赖原始 RenderingTemplate 对象的其他解决方案。

备注

由于会先于自定义模板加载随 SharePoint Foundation 附带的呈现模板,因此当加载与现有呈现模板之一具有相同 ID 的自定义模板时,它会替代原始模板。如果有两个或更多个自定义呈现模板具有相同的 ID,则其文件名按字母顺序排在最后的自定义呈现模板将替代所有其他模板。如果某个文件包含两个或更多个具有同一 ID 的呈现模板,则不会加载任何呈现模板。

MobileDefaultTemplates.ascx 或 GbwMobileDefaultTemplates.ascx 文件中还定义了以下 RenderingTemplate 对象。如果未定义当前网站类型的 RenderingTemplate 对象,则运行时会使用这些对象。(因此,除非创建 ID 为 IntendedPageUse_ CustomSiteID#_HomePage_PageArea 的自定义呈现模板,否则这些模板将根据自定义网站定义控制网站中任何网页的主页呈现。)如果新建的 RenderingTemplate 对象具有以下任意 ID,则也会存在相同风险。

  • Mobile_Default_HomePage_Title

  • Mobile_Default_HomePage_Contents

  • Mobile_Default_HomePage_Navigation

  • WebPartMobile_Default_HomePage_Title

  • WebPartMobile_Default_HomePage_Contents

  • WebPartMobile_Default_HomePage_Navigation

  • WebPartMobileDetail_Default_HomePage_Contents

  • WebPartMobileDetail_Default_HomePage_Navigation

您可以嵌套 RenderingTemplate 对象。请参阅下面一节中的示例。

自定义移动主页的某个部分

  1. 在 Microsoft Visual Studio 中,创建一个"空白 SharePoint 项目"。使其成为服务器场解决方案,而不是沙盒解决方案。

  2. 向 TEMPLATE\ControlTemplates 中添加一个"SharePoint 映射文件夹"。

  3. 右键单击此新文件夹,并添加一个 SharePoint"用户控件"。为该 .ascx 文件命名,使其与其他解决方案提供程序的名称区分开;例如 ContosoMobileRenderingTemplates.ascx。Visual Studio 会自动将该文件添加到 SharePoint 解决方案清单中,并将其设置为部署到 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\ControlTemplates。

    提示提示

    不要通过右键单击"解决方案资源管理器"中的项目 来添加"用户控件"。当通过这种方式添加"用户控件"时,Visual Studio 会将其放在 TEMPLATE\ControlTemplates 的子文件夹中,如果该控件未移动,Visual Studio 会将其部署到 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\ControlTemplates 的相应子文件夹中。不会加载子文件夹中的移动呈现模板。

  4. 删除 .ascx.cs 和 .ascx.designer.cs(或 .ascx.vb 和 .ascx.designer.vb)文件。此项目不需要它们。

  5. 将 .ascx 文件的整个指令部分替换为以下标记:

    <%@ Register TagPrefix="GroupBoardMobile"   Namespace="Microsoft.SharePoint.Applications.GroupBoard.MobileControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    <%@ Control Language="C#"   %> 
    <%@ Assembly Name="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 
    <%@ Register TagPrefix="mobile" Namespace="System.Web.UI.MobileControls" Assembly="System.Web.Mobile, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" %> 
    <%@ Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 
    <%@ Register TagPrefix="SPMobile" Namespace="Microsoft.SharePoint.MobileControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 
    <%@ Register TagPrefix="WPMobile" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    
  6. 将呈现模板添加到 ascx 文件中,然后为其提供一个具有以下格式的 ID:IntendedPageUse_SiteTypeID_HomePage_PageArea。

    • IntendedPageUse 为 Mobile、WebPartMobile 或 WebPartMobileDetail。

    • SiteTypeID 可以是 STS、SGS、BLOG 或任何自定义网站定义的 ID 号(不是名称)。(网站定义的 ID 是通过 WebTemp.xml 文件中 Template 元素的 ID 属性设置的。有关网站定义的 ID 属性的详细信息,请参阅 WebTemp.xml。)

    • PageArea 可以是 Title、Contents 或 Navigation。

  7. 在"生成"菜单上选择"部署解决方案"。这将自动保存 .ascx 文件,将其部署到 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATES\ControlTemplates,并回收 Web 应用程序,以便重新加载该文件夹中的所有 .ascx 文件。

示例

RenderingTemplate 定义的以下示例显示如何嵌套 RenderingTemplate。在此情形下,自定义模板会将指向 Microsoft 的移动网页的链接添加到页脚中,然后调用默认页脚呈现模板,以呈现页脚的其余部分。

如果移动设备无法 呈现格式文本,则移动 STS 主页为 mblwp.aspx,并且用户将看到添加到页脚顶部的新链接。

如果设备能够 呈现格式文本,则移动 STS 主页为 mblwiki.aspx。此网页的页脚(导航)区域中的控件不会调用具有分段名称的任何呈现模板,甚至不会通过间接方式会调用。尤其是,不会调用 WebPartMobile_STS_HomePage_Navigation。因此,无法通过本主题中介绍的方式自定义 mblwiki.aspx 的页脚。相应地,此示例中介绍的自定义项最初似乎对能够呈现格式文本的移动设备没有任何影响。可强制此类设备将 mblwp.aspx 用作主页,方法是将 mblwiki.aspx 中的"wiki"(在移动浏览器的地址框中)替换为"wp"。mblwiki.aspx 的页眉(标题)和正文(内容)区域使用与 mblwp.aspx 中相应区域相同的呈现模板,因此可以使用本主题中的过程自定义能够(以及无法)呈现格式文本的设备的页眉和正文区域。

有关自定义移动主页的其他示例,请参阅演练:自定义移动主页

<SharePoint:RenderingTemplate ID="WebPartMobile_STS_HomePage_Navigation" RunAt="Server">
  <Template>
    <mobile:Link Text="Microsoft Mobile" href="http://mobile.microsoft.com/" RunAt="Server" />
    <SPMobile:SPMobileComponent TemplateName="WebPartMobile_Default_HomePage_Navigation" RunAt="Server" />
  </Template>
</SharePoint:RenderingTemplate>

请参阅

任务

演练:自定义移动主页

如何:自定义移动列表视图和表单页

概念

移动页的布局和分页

如何:通过重定向自定义移动主页

移动页呈现系统