<Choice> 元素(《.NET Framework 开发人员指南》)

更新:2007 年 11 月

在 <DeviceSpecific>/<Choice> 构造中的一组选项之间提供单一的选项。在呈现过程中,<DeviceSpecific> 元素中的选项之一是根据目标设备的特性选择的。

一个 <Choice> 元素可以包含任意数量的模板。如果一个 <Choice> 元素包含多个模板,则可以将其用作模板集。有关详细信息,请参见模板集和模板化控件

<Choice> 元素还可以包含重写父控件或样式的属性的属性。可以重写以下类型的属性:

  • 任何可以通过声明方式设置为文本值的属性 (Property),ID 和 runat属性 (Attribute) 除外。无法设置被设置为对象的属性(例如控件的 DataSource 属性)。

  • 任何事件处理程序属性。重写事件处理程序将添加到任何现有的事件处理程序,但不替换它们。

  • 任何自定义属性。如果页允许为控件定义自定义特性,则任何无法识别的属性都会存储为自定义的特性。

    说明:

    默认选项应该始终是设备选择中的最后一个选项(否则,由于始终会选择默认选项,在默认选项后出现的选项将永远得不到计算)。您可以在一个 <Choice> 元素内声明任意数量的附加属性。通过该元素,可以按照特定于设备的方式来设置包含控件的属性。当为控件选择 <Choice> 元素时,这些附加属性 (Attribute) 中的每项属性 (Attribute) 都用于重写包含控件的相应属性 (Property)。

<Choice Filter="deviceFilterName"
    Other attributes here.>
        templates
</Choice>

属性

属性

说明

Filter

指定要计算的设备筛选器。如果省略此属性,则在默认情况下将选择该选项。

Contents

返回为选项定义的重写属性。如果在处理重写属性(在 OnDeviceCustomize 中)之后更改此集合,将不具有任何效果。

HasTemplates

如果 <Choice> 元素定义了任何模板,则返回 true;否则,返回 false。

Templates

返回为 <Choice> 元素定义的模板集。

Xmlns

由设计人员用来确定 <Choice> 元素模板内的标记类型。不供一般开发人员使用。

筛选器的名称必须是页上或关联 .ascx 文件中方法的名称,或在 Web.config 文件的 <deviceFilters> 节中定义的有效设备筛选器的名称。如果使用 Filter 属性指定方法名称,则该方法必须具有下列签名:

public bool methodName(
    System.Web.Mobile.MobileCapabilities capabilities,
    String optionalArgument)

例如,如果将 Filter 属性设置为 myChoiceMethod,则必须存在具有如下签名的方法:

public bool myChoiceMethod(
    System.Web.Mobile.MobileCapabilities capabilities, 
    String optionalArgument)

在计算 <Choice> 元素时,将进行检查以确定页上是否存在具有相应签名的方法。如果不存在,则检查 Web.config 文件的 <deviceFilters> 节。

有关设备筛选器计算的更多信息,请参见特定于设备的呈现Filter 属性的文档。

说明

有关详细示例,请参见 Filter 属性。

代码

<DeviceSpecific>
  <Choice Filter = "isHTML32">
    <HeaderTemplate>
      <mobile:Image runat=server ImageUrl="defaul1.gif" />
    </HeaderTemplate>
  </Choice>
  <Choice Filter="prefersWBMP">
    <HeaderTemplate>
      <mobile:Image runat="server" ImageUrl="default1.wbmp" />
        Wbmp Image<br />
    </HeaderTemplate>
  </Choice>
</DeviceSpecific>

请参见

概念

特定于设备的呈现

设备模板支持

模板集和模板化控件

参考

<deviceFilters>