次の方法で共有


デバイス フィルタに関する推奨事項

更新 : 2007 年 11 月

ここでは、ASP.NET モバイル コントロール用の比較型フィルタおよびエバリュエータ デリゲート型フィルタを作成する方法を説明します。デバイス フィルタには、名前付きの条件を作成するための機構が用意されています。このフィルタを使用すると、デバイスまたはモバイル デバイスのプロパティを指定できます。これらのフィルタは、Web.config ファイルの <deviceFilters> セクションに格納されています。

各デバイス フィルタは、1 つまたは複数のデバイスの種類に一致します。また、1 つのデバイスが複数のフィルタに一致することもあります。たとえば、Pocket PC はカラー表示のデバイスとしてフィルタ IsColor に一致し、PDA としてフィルタ IsPDA に一致する以外に、HTML ベースのブラウザとしてフィルタ IsHTML32 に一致することが考えられます。

それぞれのフィルタに対し、Web.config ファイルの <deviceFilters> セクションに <filter> 要素を追加します。

フィルタには、比較型フィルタおよびエバリュエータ デリゲート型フィルタを指定できます。

比較型フィルタ

比較型フィルタは、MobileCapabilities プロパティ値を引数と比較します。比較型フィルタの構文を以下に示します。

<filter
    name="nameofFilter"
    compare="propertyName"
    argument="filterargument" />

比較型フィルタでは、<filter> 要素は次の 3 つのプロパティを持ちます。

  • name 属性。フィルタの名前です。

  • compare 属性。フィルタが評価するプロパティを格納します。

  • argument 属性。propertyName 値と比較される引数です。引数を指定しない場合は、null が比較に使用されます。

次の例では、PreferredRenderingType の値が wml11 の場合にフィルタに一致します。

<filter
    name="isWML11"
    compare="PreferredRenderingType"
    argument="wml11" />

<Choice> 要素内でフィルタが使用され、フィルタとの一致が確認されると、ASP.NET は <Choice> 要素内のテンプレートに格納されているデバイス固有のコンテンツを選択します。

エバリュエータ デリゲート型フィルタ

エバリュエータ デリゲート型フィルタは、カスタム メソッドから true または false を返します。メソッドは、MobileCapabilities クラスのそれぞれのプロパティについて、戻り値を計算します。戻り値は、フィルタが一致するかどうかを調べるために使用されます。

エバリュエータ デリゲート型フィルタの構文を以下に示します。

<filter
    name="nameOfFilter"
    type="className"
    method="methodName" />

エバリュエータ デリゲート型フィルタには次の 3 つのプロパティがあります。

  • name 属性。フィルタの名前です。

  • type 属性。エバリュエータ デリゲートを提供するクラス型です。名前は完全修飾する必要があります。ASP.NET では、その型の指定したアセンブリが検索されます。

  • method 属性。Type クラスのメソッドの名前です。このメソッドは、フィルタに渡した MobileCapabilities インスタンスに基づいて、現在のデバイスがフィルタ条件を満たすかどうかを示すブール値を返します。

次の例では、IsGPSEnabled メソッドが true を返す場合、フィルタに一致します。

<filter
    name="GPSEnabled"
    type="MyApplication.MyCapabilityEvaluators,MyAssembly"
    method="IsGPSEnabled"/>

次の例は、IsGPSEnabled メソッドのスケルトン宣言です。

namespace MyApplication
{
    public class MyCapabilityEvaluators
    {
        public static bool IsGPSEnabled(
            System.Web.Mobile.MobileCapabilities capabilities,
            String unusedArg)
        {
            // Any necessary proccessing goes here.
        }
    }
}

フィルタに対するサポートを追加するには、Web.config ファイルの <deviceFilters> セクションに行を追加します。たとえば、前述のフィルタをコンパイルして MyApplication.dll という名前のアセンブリを生成する場合、Web.config ファイルに次の行を追加します。

<filter name="IsGPSEnabled"
   type="MyApplication.MyCapabilityEvaluators,MyApplication"
   method="IsGPSEnabled" />

参照

概念

拡張されたブラウザの機能

デバイス固有のレンダリング

参照

<filter> 要素