<Choice> 要素 (.NET Framework 開発者ガイド)
更新 : 2007 年 11 月
<DeviceSpecific>/<Choice> コンストラクトにある選択項目のセットから項目を 1 つを選択します。レンダリング時に <DeviceSpecific> 要素内の選択項目の 1 つがターゲット デバイスの特性に基づいて選択されます。
<Choice> 要素には、テンプレートを任意の数だけ含めることができます。<Choice> 要素が複数のテンプレートを含む場合、この要素はテンプレートのセットとして使用できます。詳細については、「テンプレート セットとテンプレート コントロール」を参照してください。
また、<Choice> 要素には、親コントロールやスタイルのプロパティをオーバーライドするプロパティも含めることができます。次の型のプロパティをオーバーライドできます。
リテラル値を宣言して設定できるプロパティ (ただし ID 属性と runat 属性は除く)。コントロールの DataSource プロパティなど、オブジェクトに設定されているプロパティは設定できません。
イベント ハンドラ プロパティ。オーバーライドするイベント ハンドラを既存のイベント ハンドラに追加できますが、置き換えることはできません。
カスタム属性。認識されないがカスタム属性として格納されているプロパティ (ページ内でコントロール用のカスタム属性を定義できる場合)。
メモ : 既定の選択項目は、デバイスの選択肢にある最後の選択項目であることが必要です。最後にない場合、既定の選択項目の後にある項目が評価されることはありません。これは既定の選択項目が必ず選択されるためです。<Choice> 要素内には任意の数だけ属性を追加宣言できます。これにより、デバイス固有の条件に基づいて、オブジェクトが含まれるコントロールのプロパティを設定する手段が得られます。あるオブジェクトが含まれるコントロールに <Choice> 要素を選択した場合、追加された属性を使用して、このコントロールに対応するプロパティをオーバーライドします。
<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>