Welcome 微信登录

首页 / 网页编程 / ASP.NET / ASP.NET 2.0移动开发之属性重写和模板化

ASP.NET 2.0移动开发之属性重写和模板化2008-04-22本文将重点讲解如何为特定的硬件设备自定义ASP.net Web移动程序,以及使用模板自定义Form和Panel等控件。通过属性重写这个特性,使ASP.NET Web移动程序可以根据移动设备的硬件功能,为特定的硬件指定其控件的属性值。例如,应用程序可能需要一个Label控件在一些设备上显示较长的文本,而在另一些设备上显示较简短的文本。这就需要我们为每个控件都提供一组属性,应用程序可以针对各个设备重写这些属性。所有的ASP.NET移动控件都具有默认的外观和布局。对于ASP.NET移动控件,你可通过设置属性或使用样式来改变移动控件的默认外观。你还可以使用模板自定义某些移动控件的外观。本章还将重点介绍模板和模板集,以及它们的使用方法。

自定义的方式

在前面的几个专题中,我们提过如何使用设备筛选器为特定设备进行自定义。除此之外,我们还可以使用模板化技术和属性重写功能使你可以自定义你的应用程序,以便对特定的设备类型以不同的方式呈现控件。如果你在.aspx页面中为一个控件使用上述的任何一种自定义方法,都可以使用一个名为DeviceSpecific/Choice构造的移动控件语法。DeviceSpecific/Choice构造通常是为特定于设备的选项模板集以及控件内在多个备选内容之间指定一个选项。例如,下面的代码是一个Label控件的声明语法,在这个声明中包含了一个用来鉴别当前浏览器是否支持HTML的DeviceSpecific/Choice构造。

<mobile:Label id="Label1" runat="server" Text="Default text">
<DeviceSpecific>
<Choice Filter="isHTML32" Text="Text for selected devices" ></Choice>
</DeviceSpecific>
</mobile:Label>

其中Filter属性指定了一个设备筛选器,该设备筛选器其名称为isHTML32,它用来鉴别一个移动设备是否内置了HTML浏览器。如果内置了HTML浏览器的话,将会在Label控件上应用“Text for selected device”这段文本。相反的,就不作任何的显示。正如上述的代码所示,在<DeviceSpecific></DeviceSpecific>内通常包含一个或多个<Choice>元素,每个元素都包含指定如何根据目标设备功能计算选项的属性。运行时依次计算每个选项,并使用成功计算出的第一个选项(这和C#里的switch case语句非常相似)。

在开始学习如何定义一个设备筛选器前,先让我们先了解一些基本的概念,例如属性重写和模板化的具体含义。

属性重写

一般情况下,我们开发的ASP.NET Web移动程序并不是针对某个具体的设备,而是可以根据移动设备硬件特性的不同,通过适应性的调整从而可以在几乎所有的硬件设备上进行良好的呈现。

但是因为品牌和型号的不同,这些移动设备间就不可避免地存在一些差异。例如支持的颜色、屏幕大小、输入功能以及浏览器使用的标记语言等。前面提到过,ASP.NET控件是可以被几乎所有的硬件设备支持的,因为它们本身就具有适应性调整的功能,而且控件设置的属性值也会伴随ASP.NET控件应用到具体的应用程序中,并不会因为硬件设备的不同使属性值不同。但是,在某些情况下你可能舍弃默认的呈现,采用自定义的呈现方式。一个典型的例子就是字符的显示,例如我们使用Label控件进行字符串的显示,在一些屏幕较小的设备上,每一行显示的字符数也是较少的,因此我们可以为该控件的Text属性设置为“我们使用ASP.NET”,而针对一些大屏幕的设备,我们可以将Label控件的Text属性设置为“我们使用ASP.NET构建一个功能完善的移动应用程序”,正是因为属性重写功能,我们才可以使用上述的方法来构建一个针对不同移动设备的硬件特性做出最好呈现的ASP.NET Web移动应用程序。

模板

Form、Panel、List和ObjectList等移动控件都是模板化的控件。开发人员通常使用模板来改变或丰富应用程序的外观或内容。例如,如果为Form控件指定并选择了页眉或页脚模板,则该模板中包含的标记将被添加到窗体内容中,分别作为页眉或页脚进行呈现。请注意模板不同于样式,模板定义要显示的内容和控件。当应用程序呈现模板附加到的控件时,即会呈现模板。而样式指定内容和控件的外观,您的应用程序可在不使用模板的情况下使用样式,它也可在模板内将样式应用于您定义的移动控件。 除了模板外,ASP.NET移动控件在此基础上还扩展了一个新的模型,并引入了模板集的概念。模板集是由模板组成的集合。但是,单个模板化控件可能引用多个模板集,而每个模板集都具有不同的特定于设备的条件。模板集的具体实现将在后续章节具体介绍。