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

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

适用范围: SharePoint Foundation 2010

主页重定向中所述,Microsoft SharePoint Foundation 仅对主页应用第二个重定向系统。本主题介绍如何修改此系统以使移动用户获得特定网站类型的其他主页。

备注

仅在移动用户通过以下方法之一访问网站主页时,才会调用主页重定向:

  • 将 default.aspx 指定为主页:http://MyServer/MyWebSite/default.aspx

  • 未指定页面文件,但在网站 URL 末尾追加 /m/:http://MyServer/MyWebSite/m/。(仅当激活旧式 MobileRedirection 功能后,才能使用此方法。有关详细信息,请参阅移动网页和重定向系统概述。)

还可从计算机浏览器调用重定向功能,方法是使用 /m/ 或在 URL 中 default.aspx 的后面添加 ?Mobile=1。

本主题中介绍的修改方法对以下移动用户没有任何影响:这些用户仅通过使用网站 URL (http://MyServer/MyWebSite/) 或通过指定 default.aspx (http://MyServer/MyWebSite/HomePage.aspx) 以外的网页来访问网站主页。

主页重定向使用两级重定向机制。移动设备最初重定向到位于 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS\MOBILE 位置的移动 default.aspx 页面。然后,该 default.aspx 页面会根据当前网站定义类型,使用以下序列将用户重定向到实际的主页:

  1. default.aspx 中的唯一内容是一个控件,它指示运行时使用名为 MobileHomePageRedirect 的 RenderingTemplate

  2. 运行时在内存中搜索从 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\CONTROLTEMPLATES 中的 ascx 文件加载的所有呈现控件,以查找具有该名称的 RenderingTemplate。它会从 MobileDefaultTemplates.ascx 文件中找到此模板。

  3. MobileHomePageRedirect 控件的 Template 属性将运行时指向 SPMobileWebUrlRedirect 类的对象。

  4. SPMobileWebUrlRedirect 对象使用 Mobile_SiteTypeID_HomePage_Redirect 模式构造另一个 RenderingTemplate 的名称,其中,SiteTypeID 是 SharePoint Foundation 附带的网站定义的名称(如 STS、SGS 或 BLOG);或自定义网站定义的 ID 号(如 10001)。(有关详细信息,请参阅 SPMobileWebUrlRedirect 类的参考主题。)

  5. 运行时搜索从 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\CONTROLTEMPLATES 中的 ascx 文件加载的所有呈现模板,以查找另一个 RenderingTemplate

可以创建将用户重定向到其他移动主页的自定义控件。

过程

通过重定向替换移动主页

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

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

  3. 右键单击此新文件夹,添加一个将成为新主页的纯文本文件,并为其提供一个扩展名为 .aspx 的名称;例如 ContosoHomePage.aspx。Visual Studio 会自动将该文件添加到 SharePoint 解决方案清单中,并将其设置为部署到 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS\MOBILE。

    提示提示

    不要向项目中添加 SharePoint"应用程序页面"项。Visual Studio 会将这些项目包括在一些不适合移动网页的部署开销文件夹和文件(文件的默认内容)中。

  4. 将现有网页的内容(如 mblwiki.aspx、mblwp.aspx、mblwpdetail.aspx 或 bloghome.aspx)从 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS\MOBILE 复制到您的自定义文件中。

  5. 根据需要修改文件的内容。(要进行快速测试,请复制 mblwiki.aspx 的内容,然后交换标题中的前景和背景色设置,以便页面标题在白色背景上显示为深蓝灰色类型,而不是在深蓝灰色背景上显示为默认的白色类型。)

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

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

    提示提示

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

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

  9. 将 .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" %>
    
  10. 将呈现模板添加到 .ascx 文件中,然后为其提供一个具有以下格式的 ID:Mobile_SiteTypeID_HomePage_Redirect。

    SiteTypeID 可以是以下任意项:

    • 工作组网站定义的名称:"STS"

    • 组工作网站定义的名称"SGS"

    • 已创建的任何自定义网站定义的 ID 号(而非名称)。

    已在 MobileDefaultTemplates.ascx 中定义了 Mobile_BLOG_HomePage_Redirect RenderingTemplate。您不能修改此文件。可以在自定义 .ascx 文件中创建另一个名为 Mobile_BLOG_HomePage_Redirect 的 RenderingTemplate,但这样做可能会损害其他已安装的自定义解决方案或可能依赖于现有 Mobile_BLOG_HomePage_Redirect 的第三方解决方案。

    将首先加载 SharePoint Foundation 附带的 RenderingTemplate,因此,当加载同名的自定义模板时,将覆盖标准呈现模板。如果两个或更多个自定义 RenderingTemplate 同名,则其文件名按字母顺序排在最后一位的模板将替代其他模板。如果给定文件具有两个或更多个同名的模板,则不会加载任何一个模板。

    备注

    MPS、CENTRALADMIN、TENANTADMIN 和旧式 WIKI 网站定义不支持从移动设备进行访问。

    备注

    网站定义的名称由 WebTemp.xml 文件中 Template 元素的 Name 属性定义,网站定义的 ID 是使用同一元素的 ID 属性设置的。有关这些属性的详细信息,请参阅 WebTemp.xml

    重要注释重要信息

    网站定义的 Onet.xml 文件中网站定义配置Configuration 元素必须具有 WebFeatures 元素,且该元素必须具有主页重定向功能元素:<Feature ID="F41CC668-37E5-4743-B4A8-74D1DB3FD8A4" />。

    以下模板示例演示如何将访问基于 STS 网站定义的网站的移动设备重定向到 ContosoHomePage.aspx。

    <SharePoint:RenderingTemplate RunAt="Server"
       ID="Mobile_STS_HomePage_Redirect">
      <Template>
        <SPMobile:SPMobileHomePageRedirection RunAt="Server" 
          PageFileName="ContosoHomePage.aspx" />
      </Template>
    </SharePoint:RenderingTemplate>
    
  11. 在"生成"菜单上选择"部署解决方案"。这将自动保存 .ascx 文件,部署这两个文件,并回收 Web 应用程序,以便重新加载该文件夹中的所有 .ascx 文件。

  12. 使用移动设备或仿真程序测试新主页。请注意,看到的是其他主页还是原始主页完全取决于您所使用的 URL。有关详细信息,请参阅本主题的前面部分。

请参阅

概念

使用 SharePoint Foundation 进行移动开发

其他资源

有关移动开发的操作方法和演练