演练:自定义移动主页
上次修改时间: 2011年2月2日
适用范围: SharePoint Foundation 2010
本演练演示如何通过实现自定义 RenderingTemplate 控件来自定义移动主页。此示例演示如何自定义主页的标题部分。有关自定义移动主页的任何部分的步骤的概述,请参阅如何:自定义移动主页。
在自定义之前
在用作工作组网站 (STS) 移动主页的 mblwiki.aspx 文件的两个 HeaderTemplate 元素中声明 SPMobileComponent 对象,将其 TemplateName 属性明确设置为 WebPartMobileSummaryViewTitle。下面将显示这些元素中的其中一个元素:
<HeaderTemplate>
<SPMobile:SPMobileControlContainer RunAt="Server" Weightless="true">
<SPMobile:SPMobileComponent RunAt="Server"
TemplateName="WebPartMobileSummaryViewTitle" />
<SPMobile:SPMobileComponent RunAt="Server"
TemplateName="MobileDefaultSeparator" />
</SPMobile:SPMobileControlContainer>
</HeaderTemplate>
此对象在其 ID 为"WebPartMobileSummaryViewTitle"的 MobileDefaultTemplates.ascx 中调用 RenderingTemplate。RenderingTemplate 显示如下:
<SharePoint:RenderingTemplate RunAt="Server"
id="WebPartMobileSummaryViewTitle">
<Template>
<SPMobile:SPMobileWebTitle RunAt="Server" Prefix="WebPartMobile" />
</Template>
</SharePoint:RenderingTemplate>
如本示例所示,呈现模板将调用 SPMobileWebTitle 类的模板选择器对象。此模板选择器对象将构造以下呈现模板 ID,并调用具有此 ID 的呈现模板:WebPageMobile_STS_HomePage_Title。如果没有具有此 ID 的呈现模板,则它会使用一个名为 WebPageMobile_Default_HomePage_Title 的模板。
Microsoft SharePoint Foundation 不包含具有 ID Mobile_STS_HomePage_Title 的 RenderingTemplate。在本演练中,您将创建一个在双色面板中呈现主页标题的模板。在自定义之前,WebPageMobile_Default_HomePage_Title 会以屏幕快照中显示的形式呈现 STS 主页的标题。标题文本来自相应的非移动 STS 主页的标题。该文本以白色文字呈现在深蓝色面板中。
工作组网站主页标题区域的默认呈现
过程
自定义 STS 移动主页的标题部分
在 Microsoft Visual Studio 中,创建一个"空白 SharePoint 项目"。将其设置为服务器场解决方案,而不是沙盒解决方案。
向 TEMPLATE\ControlTemplates 中添加一个"SharePoint 映射文件夹"。
右键单击新文件夹,并添加一个 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 的相应子文件夹中。不会加载子文件夹中的移动呈现模板。
删除 .ascx.cs 和 .ascx.designer.cs(或 .ascx.vb 和 .ascx.designer.vb)文件。此项目不需要它们。
将 .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" %>
在这些指令下,添加以下标记。这样可创建一个具有 ID 的 RenderingTemplate,页面分析程序在呈现 STS 主页的标头区域时将查找此 ID。
<SharePoint:RenderingTemplate ID="WebPartMobile_STS_HomePage_Title" RunAt="Server"> </SharePoint:RenderingTemplate>
在 RenderingTemplate 元素中,定义一个具有 SPMobilePaddedPanel 子控件的 Template 元素。设置标签的 ForeColor 属性、BackColor 属性、Font-Size 属性和 Font-Bold 属性,如以下示例所示。
<Template> <SPMobile:SPMobilePaddedPanel RunAt="Server" ForeColor="#FFFFFF" BackColor="#990033" Font-Bold="True" Font-Size="13pt"> <WPMobile:WebPartMobilePageTitle RunAt="Server" /> </SPMobile:SPMobilePaddedPanel> </Template>
在"生成"菜单上,选择"部署解决方案"。这将自动保存 .ascx 文件,将其部署到 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATES\ControlTemplates,并回收 Web 应用程序,以便重新加载该文件夹中的所有 .ascx 文件。
在部署中通过您的设备或仿真程序导航到任何 STS 网站的主页。标题应显示在深蓝色面板内的内部红色面板中。(外部面板直接在 mblwiki.aspx 页上进行声明,因此无法通过自定义删除它。如果要删除它,则必须为 STS 网站创建一个新主页,并使用主页重定向功能将移动设备重定向到新页面。有关主页重定向的详细信息,请参阅主页重定向和如何:通过重定向自定义移动主页。)