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

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

适用范围: SharePoint Foundation 2010

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

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

运行时尤其会查找具有以下格式的 RenderingTemplate ID:

IntendedListUse_ListTypeID_PageType_PageArea

占位符 IntendedPageUse、ListTypeID、PageType 和 PageArea 在呈现模板分段 ID 中定义。在列表视图页或项目表单上,PageType 的值可能为 DispForm、NewForm、EditForm 和 DeletePage。

有关移动网页的各个部分的详细信息,请参阅移动页的布局和分页

对于特定 IntendedPageUse、ListTypeID、PageType 和 PageArea,如果未找到名称匹配的 RenderingTemplate,则会使用由"Default"替换 ListTypeID 的名称:

IntendedPageUse_Default_PageType_PageArea

例如,如果运行时查找 ID 为 Mobile_Announcements_View_Contents 的 RenderingTemplate,则它将找不到(如果未添加具有该名称的自定义模板)。因此,它将使用 存在的 Mobile_Default_View_Contents 来呈现公告列表的列表视图网页的正文(内容)区域。

因此,如果要自定义此列表视图的正文(内容)的呈现方式,可在部署到%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATES\ControlTemplates 的 ascx 文件中创建 ID 为 Mobile_Announcements_View_Contents(或 Mobile_104_View_Contents)的 RenderingTemplate 元素。您不能修改 MobileDefaultTemplates.ascx 或 GbwMobileDefaultTemplates.ascx 文件。有关如何创建列表视图网页或表单的自定义呈现模板的详细信息,请参阅下一节中的过程以及演练:自定义移动列表视图页

现有 RenderingTemplate

随 SharePoint Foundation 安装的 MobileDefaultTemplates.ascx 或 GwbMobileDefaultTemplates.ascx 文件中包含移动列表视图页和表单的多个 RenderingTemplate 对象。下面是一些示例。

  • Mobile_Events_DispForm_Navigation

  • Mobile_Comments_View_Navigation

  • Mobile_Posts_DeletePage_Navigation

  • Mobile_425_View_Navigation

  • MobileFolder_DocumentLibrary_View_Navigation

  • MobileDailyView_Events_View_Navigation

您不能修改 MobileDefaultTemplates.ascx 或 GwbMobileDefaultTemplates.ascx 文件。您可以创建与某个现有呈现模板具有相同 ID 的新 RenderingTemplate(在您自己的 .ascx 文件中),但是,如果这样做,将有可能破坏在 SharePoint Foundation 中部署的依赖于具有同一 ID 的原始 RenderingTemplate 的其他解决方案。

备注

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

此外,还会在同一文件中定义下列默认的 RenderingTemplate 元素。只要未定义当前列表类型的 RenderingTemplate 元素,运行时就会使用这些元素。当创建具有这些名称中的任一名称的新的 RenderingTemplate 对象时,存在相同的风险:

  • Mobile_Default_DeletePage_Contents

  • Mobile_Default_DeletePage_Navigation

  • Mobile_Default_DeletePage_Title

  • Mobile_Default_DispForm_Contents

  • Mobile_Default_DispForm_Navigation

  • Mobile_Default_DispForm_Title

  • Mobile_Default_EditForm_Contents

  • Mobile_Default_EditForm_Navigation

  • Mobile_Default_EditForm_Title

  • Mobile_Default_NewForm_Contents

  • Mobile_Default_NewForm_Navigation

  • Mobile_Default_NewForm_Title

  • Mobile_Default_View_Contents

  • Mobile_Default_View_Navigation

  • Mobile_Default_View_Title

  • MobileDailyView_Default_View_Navigation

  • MobileFolder_Default_View_Title

  • MobileFolder_Default_View_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:IntendedListUse_ListTypeIDPageType_PageArea。

    • IntendedListUse 为 Mobile、MobileFolder 或 MobileDailyView。

    • ListTypeID 是当前列表类型的 ID 号(如 105)或 SPListTemplateType 枚举的值之一(如 Contacts)。

    • PageType 可以是 View、NewForm、EditForm、DispForm 或 DeletePage。

    • PageArea 可以是 Title、Contents 或 Navigation。

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

示例

下面的 RenderingTemplate 定义示例演示如何嵌入 RenderingTemplate 对象。该示例显示列表视图网页(显示列表类型 104,即"公告")的页脚的自定义 RenderingTemplate。有关如何自定义列表视图网页的详细示例,请参阅演练:自定义移动列表视图页

<SharePoint:RenderingTemplate RunAt="Server" ID="Mobile_104_View_Navigation">
  <Template>
    <mobile:Link RunAt="Server" 
      Text="ASP.NET Website" href="https://www.asp.net" />
    <mobile:Label RunAt="Server" Text="" BreakAfter="True" />
    <SPMobile:SPMobileComponent RunAt="Server" 
      TemplateName="Mobile_Default_View_Navigation" />
  </Template>
</SharePoint:RenderingTemplate>

请参阅

任务

演练:自定义移动列表视图页

如何:自定义移动主页

概念

移动页的布局和分页

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

移动页呈现系统