提供 DeviceSpecific/Choice 建構內一組選項的單一選擇。在呈現期間,會根據目標裝置的特性在 <DeviceSpecific> 項目內選取其中一個選擇。
<Choice> 項目可包含任何數目的樣板。如果 Choice 項目包含樣板,就可當作樣板集使用。如需詳細資訊,請參閱樣板集和樣板化控制項。
Choice 項目還可包含用於覆寫父代 (Parent) 控制項或樣式屬性的屬性。以下列出可覆寫的屬性類型:
- 能夠以宣告方式設定為常值 (Literal) 值的任何屬性 (Property),除了 id 和 runat 屬性 (Attribute) 之外。設定為物件的屬性 (例如,控制項的 DataSource 屬性) 無法設定。
- 任何事件處理常式屬性。覆寫事件處理常式加入至現有事件處理常式,但不會取代現有事件處理常式。
- 任何自訂屬性。如果頁面允許定義控制項的自訂屬性 (Attribute),則會將無法辨識的任何屬性 (Property) 儲存為自訂屬性 (Attribute)。
注意 預設選擇應該永遠是裝置選擇項目中的最後選擇 (否則因為永遠會選取預設選擇,所以永遠不會評估出現在預設選擇後的選擇)。
裝置的特定屬性
您可在 <Choice> 項目內宣告任何數量的額外屬性。這提供以裝置特定基礎方式來設定包含控制項的屬性。當選取控制項的 <Choice> 項目時,會使用每個額外屬性 (Attribute) 來覆寫包含控制項的相對應屬性 (Property)。
行動控制項語法
需要的屬性和具程式碼功能的項目以粗體樣式標註。
<Choice Filter="deviceFilterName"
Other attributes here.>
templates</Choice>
屬性
| 屬性 | 說明 |
|---|---|
| Filter | 指定要評估的裝置篩選條件。如果省略此屬性,則會根據預設挑出選擇。 |
| Contents | 傳回為選擇定義的覆寫屬性。在覆寫屬性已經過處理後變更此集合 (在 OnDeviceCustomize 中) 無效。 |
| HasTemplates | 如果已定義 <Choice> 項目的任何樣板,則會傳回 true。否則會傳回 false。 |
| Templates | 傳回定義的 <Choice> 項目的樣板集。 |
| xmlns | 由設計工具使用,以決定選擇樣板內部的標記類型。不是供一般開發人員使用。 |
篩選條件名稱必須是頁面上或關聯的 .ascx 檔案中的方法名稱,或是 Web.config 的 <devicefilters> 區段中定義的有效裝置篩選條件的名稱。如果使用 Filter 屬性指定方法名稱,則該方法必須符合原型 (Prototype):
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>