<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>
属性
属性 |
说明 |
---|---|
指定要计算的设备筛选器。如果省略此属性,则在默认情况下将选择该选项。 |
|
返回为选项定义的重写属性。如果在处理重写属性(在 OnDeviceCustomize 中)之后更改此集合,将不具有任何效果。 |
|
如果 <Choice> 元素定义了任何模板,则返回 true;否则,返回 false。 |
|
返回为 <Choice> 元素定义的模板集。 |
|
由设计人员用来确定 <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>