构建基块:移动页、控件和适配器

上次修改时间: 2010年3月19日

适用范围: SharePoint Foundation 2010

本文内容
移动网页、控件和适配器的对象模型
用于移动网页、控件、适配器和文档查看器的 XML
与移动网页、控件和适配器开发相关的领域
有关移动网页、控件和适配器开发的详细信息

本主题简要概述了 Microsoft SharePoint Foundation 中的开发构建块:移动网页、控件和适配器。

为了使移动设备能够访问 SharePoint Foundation 部署,SharePoint Foundation 提供了一系列移动网页和移动控件,它们与可从(非移动)计算机访问的网页和控件完全分离。移动设备通过移动 Web 部件适配器也可以访问某些 Web 部件。

当移动设备导航到 SharePoint Foundation URL 时,SharePoint Foundation 会从请求标头检测浏览器类型,并将请求重定向到该页的移动版本。移动网页将具有移动控件,这些控件通常镜像网页非移动版本上控件的功能。如果非移动网页是 Web 部件页,则移动网页可能具有针对非移动网页上一个或多个 Web 部件的适配器。适配器是 Web 部件及其子控件的替代版本,可针对移动设备的小屏幕适当地呈现内容。

您可以创建自己的自定义移动网页、控件和适配器,以使移动设备可以访问您的 SharePoint Foundation 解决方案。

移动网页、控件和适配器的对象模型

以下各节将用于移动开发的类分为三个大类进行讨论。

移动网页类

SharePoint Foundation 中的移动网页不使用母版页。此外,网站页和应用程序页之间的区别在移动设备的 SharePoint Foundation 开发中不适用。SharePoint Foundation 中的所有移动网页都是应用程序页。它们无法在安全模式下运行。

所有 SharePoint Foundation 移动网页都是直接或间接地从以下类之一继承:

  • SPMobilePage – 如果以下更特定的类中没有合适的类,可使用此类作为自定义移动网页的基类。

  • SPMoblogPage – 如果自定义移动网页是逻辑网站一部分,可以使用此类作为基类。

  • WebPartMobilePage – 使用此类作为自定义移动 Web 部件页的基类。每个 WebPartMobilePage 对象必须具有相应的非移动 WebPartPage 对象(称为"目标页")。目标页上已为其创建了移动适配器的每个 Web 部件都会呈现在该页的移动版本上。

  • SPMobileWikiPage – 此类是从 WebPartMobilePage 派生的,使用它可作为自定义移动 wiki 网页的基类。此类型的每个网页必须具有一个对应的目标 wiki 网页。目标页上已为其创建了移动适配器的每个 Web 部件都会呈现在该页的移动版本上。

除了创建自己的移动网页,您还可以修改将请求从移动设备路由到移动网页的重定向系统。有关详细信息,请参阅移动网页和重定向系统概述移动页移动页的布局和分页如何:通过重定向自定义移动主页。有关通常情况下开发移动网页的详细信息,另请参阅如何:自定义移动主页如何:自定义移动列表视图和表单页如何:自定义移动页上的字段呈现

移动控件类

Microsoft.SharePoint.MobileControls 命名空间中提供了近 200 个类,它们最终都是从 Microsoft ASP.NET System.Web.UI.MobileControls.MobileControl 类继承的。除某些例外情况,SharePoint Foundation 移动控件的继承关系中都包括 SPMobileComponent。该类为 SharePoint Foundation 移动控件提供各种成员,包括:

  • 提供 SharePoint Foundation 上下文信息(如当前网站、当前列表、网页类型和当前用户权限)的成员。

  • 管理由于控件过大或具有过多子元素而无法在移动设备的屏幕上完整读取时使用的截断系统的成员。

  • 实现用来呈现控件的呈现模板系统的成员。

备注

SPMobileComponent 是直接从 System.Web.UI.MobileControls.MobileControl 派生的,因此从 SPMobileComponent 派生的任何 SharePoint Foundation 类都不能从任何特定 Microsoft ASP.NET 移动控件类派生,即使它的名称可能会令您认为如此。例如,SPMobileListItem 不会从 System.Web.UI.MobileControls.MobileListItem 派生。但是,Microsoft.SharePoint.MobileControls 命名空间中的确有一些类是直接从对应的 ASP.NET 类派生的,而不是从 SPMobileComponent 派生的,SPMobileLink 就是这种类。

大多数 SharePoint Foundation 移动控件都不会在移动 aspx 网页中直接引用,它们是作为 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATES\ControlTemplates 下 MobileDefaultTemplates.ascx 文件中 RenderingTemplate 元素的子对象进行引用。在对从 SPMobileComponent 派生的类进行实例化的对象的TemplateName 属性中会依次引用呈现模板(ASP.NET 用户控件)。呈现模板是移动网页上引用的最后一个对象。实际上,通常的情况是,网页上对象所引用的呈现模板本身是 MobileDefaultTemplates.ascx 中一系列呈现模板中的第一个模板,每个模板都引用下一个模板,直到到达真正包含子移动控件的呈现模板为止。在某些情况下,系统会根据网站类型、网页类型和列表类型等上下文信息动态地选择最终呈现的控件。

通常,在 SharePoint Foundation 解决方案中使用自定义控件时,您会使用如下同一个系统:向 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATES\ControlTemplates 下的 ascx 文件中的自定义呈现模板中添加自定义控件,然后修改调用系统,以便在网页上的所需位置使用您的自定义呈现模板。

有关开发移动控件的详细信息,请参阅移动网页和重定向系统概述移动页呈现系统省略号和呈现限制如何:自定义移动主页如何:自定义移动列表视图和表单页如何:自定义移动页上的字段呈现以及 Microsoft SharePoint Foundation 软件开发工具包 (SDK) 的有关移动开发的操作方法和演练节点中的演练主题。

移动适配器类

SharePoint Foundation 使用控件适配器的 ASP.NET 系统在移动网页上实现 Web 部件的功能。所有 SharePoint Foundation 移动适配器类都是从 WebPartMobileAdapter 派生的,后者本身是从 ASP.NET 类 ControlAdapter 派生的。WebPartMobileAdapter 类对 ControlAdapter 类所做的主要修改是旨在阻止对呈现 Web 部件的 HTML 编写器对象进行直接访问。这些修改是安全性要求的。

移动 Web 部件适配器不是在移动网页上引用的,而是在配置文件中映射到所适配的 Web 部件。呈现对应于目标非移动 Web 部件页的移动网页时,运行时会查看目标页中的每个 Web 部件,确定它是否具有适配器,如果有,则呈现适配器;如果没有,则移动网页上不会呈现该 Web 部件。

下列 Web 部件适配器内置于 SharePoint Foundation:

您可以为自定义 Web 部件或 SharePoint Foundation 中内置的 Web 部件创建自己的自定义移动 Web 部件适配器。

尽管移动网页在安全模式下不运行,但您必须将 Web 部件适配器注册为安全控件,就像必须对 Web 部件做的那样。这样做是为了确保对 web.config 文件没有编辑权限的人员不能使用移动网页和移动适配器访问不安全的 Web 部件。

备注

SharePoint Foundation 不支持针对 Web 部件以外的控件创建移动适配器。

有关为 SharePoint Foundation 开发移动适配器的详细信息,请参阅如何创建移动适配器演练:创建移动适配器

移动上下文类

SPMobileContext 类是一个非常方便的类,它可以封装有关当前 HTTP 上下文的属性,这些属性在针对移动设备进行开发时非常有用。例如,MarkupLanguage 属性可返回呈现移动设备(如,"html32"、"chtml10"、"xhtml-mp"或"wml11")上浏览器所用语言的网页的名称。

移动重定向成员

UnsecuredLayoutsPageBase 类具有虚拟成员,可将移动设备的重定向请求系统实现为被请求页的移动版本。如果您从 UnsecuredLayoutsPageBase(该页应为非移动网页)派生一个自定义类型页,并希望移动设备可以访问该页实例的移动版本,但默认重定向逻辑不适用于您的网页类型,则可以覆盖这些成员。

移动实用工具类

SPMobileUtility 类具有许多可在 SharePoint Foundation 的移动开发中使用的静态方法和字段。

用于移动网页、控件、适配器和文档查看器的 XML

大多数列表视图并不适合在移动设备的小屏幕上进行显示。因此,默认情况下,移动网页上仅显示指定为移动视图的列表视图。(但反之则不然,在非移动网页上也可以查看移动视图。)除计算机浏览器中可见的默认视图外,移动设备还可以使用不同的默认列表视图。

通过将 View 元素(列表) 元素的 MobileView 属性设置为 True,可将列表视图指定为移动视图。通过将同一元素的 MobileDefaultView 属性设置为 True,可将移动视图指定为默认移动视图。

如果您的解决方案包括查看器,以便在文档的格式不是移动设备浏览器的呈现格式的情况下,也可以在移动设备上查看指定类型的文档,则可以创建特殊的移动网页来承载该查看器,并使用 XML 标记来注册网页,还可以让自带适用于指定格式的查看器的设备直接打开文档。有关此标记的详细信息,请参阅开发移动文档查看器

与移动网页、控件和适配器开发相关的领域

构建基块:网页和用户界面

构造块:Web 部件

有关移动网页、控件和适配器开发的详细信息

此 SDK 的使用 SharePoint Foundation 进行移动开发节点中提供了有关移动设备 SharePoint Foundation 开发的扩展信息和详细信息。