次の方法で共有


デバイス テンプレート サポート

更新 : 2007 年 11 月

デバイス テンプレート サポートは、DeviceSpecific の Choice コンストラクトの一部として提供されています。デバイス テンプレートを提供する ASP.NET モバイル コントロールの記述は、テンプレート化された ASP.NET サーバー コントロールを記述するのとよく似ています。ただし、モバイル コントロール固有の以下の相違点に注意する必要があります。

  • デバイス テンプレートをサポートするモバイル コントロールは、ITemplateable インターフェイスを実装します。これはマーカー インターフェイスであり、メソッドを持っていません。

  • デバイス テンプレートをサポートするコントロールは既定のレンダリング モードを持っていなければなりません。したがって、デバイス テンプレートが定義または指定されていなくても、コントロールはデバイスにレンダリングすることができます。

  • コントロールの開発者は、レンダリング時のデバイス テンプレートの処理方法を決めておく必要があります。デバイス テンプレートを定義して選択している場合、ある動作によって排他的なテンプレート モードに切り替わります。次にコントロールは、指定されたテンプレートを使用してすべてのレンダリングを実行します。このようなコントロールの例が、List コントロールです。このほか、コントロールは純粋に付加的なプロセスでテンプレートを使用することができます。あるテンプレートが定義および選択されている場合、既定のレンダリングの一部に追加したり、規定のレンダリングの一部を置き換えたりするために、そのテンプレートを使用できます。この動作を行うコントロールの例が、Form コントロールです。

  • ITemplate プロパティを公開する代わりに、モバイル コントロールは定義済みテンプレートのコレクションにアクセスできます。MobileControl 基本クラスは、コントロールがデバイス テンプレートを使用するときに役立つ、以下の 2 つのメンバを持っています。

    • IsTemplated プロパティは、以下のコード例に示すように、コントロールが定義済みの選択されたテンプレートを持っているかどうかを示します。

      if (mobileControl.IsTemplated)
      {
          return true;
      }
      
    • GetTemplate メソッドは、指定された名前のデバイス テンプレートを返します。ただし、テンプレートが定義されていない場合は null を返します。次のコード例は、デバイス テンプレートを取得し、ステータスが null かどうかをテストする方法を示しています。

      public override void CreateDefaultTemplatedUI(bool doDataBind) 
          {
              ITemplate headerTemplate = GetTemplate(Constants.HeaderTemplateTag);
              ITemplate footerTemplate = GetTemplate(Constants.FooterTemplateTag);
              ITemplate scriptTemplate = GetTemplate(Constants.ScriptTemplateTag);
              if (headerTemplate != null)
              {
                  _headerContainer = new TemplateContainer();
                  headerTemplate.InstantiateIn(_headerContainer);
                  _headerContainer.EnablePagination = false;
                  Controls.AddAt(0, _headerContainer);
              }
              if (footerTemplate != null)
              {
                  _footerContainer = new TemplateContainer();
                  footerTemplate.InstantiateIn(_footerContainer);
                  _footerContainer.EnablePagination = false;
                  Controls.Add(_footerContainer);
              }
              if (scriptTemplate != null)
              {
                  _scriptContainer = new TemplateContainer();
                  scriptTemplate.InstantiateIn(_scriptContainer);
                  _scriptContainer.EnablePagination = false;
              }
          }
      

次の表は、Form コントロールを通じて利用できるテンプレートを示しています。Form コントロールは、デバイス固有のテンプレート セットとデバイスに依存しないテンプレート セットの両方をサポートしています。

テンプレート

説明

ヘッダー テンプレート

ヘッダー テンプレートは、フォームの一番上にレンダリングされます。フォームが複数の画面に改ページ調整されている場合は、各画面にヘッダーが表示されます。ヘッダー テンプレートは、デバイスに依存しないテンプレート セットの一部にすることができます。テンプレート セットがデバイスに依存しない場合、ヘッダー テンプレートにはモバイル コントロールが含まれます。

フッター テンプレート

フッター テンプレートは、フォームの一番下にレンダリングされます。フォームが複数の画面に改ページ調整されている場合は、各画面にはフッターが表示されます。フッター テンプレートは、デバイスに依存しないテンプレート セットの一部にすることができます。テンプレート セットがデバイスに依存しない場合、フッター テンプレートにはモバイル コントロールが含まれます。

スクリプト テンプレート

スクリプト テンプレートは、フォームの一番上にレンダリングされます。フォームが複数の画面に改ページ調整されている場合は、各画面にスクリプト テンプレートが表示されます。スクリプト テンプレート内のコードは、HTML デバイスでは <head> の開始タグの直後に追加され、WML デバイスでは <card> の開始タグの直後に追加されます。

これらのテンプレートは、プログラムからも使用可能です。詳細については、Footer プロパティ、Header プロパティ、および Script プロパティを参照してください。

参照

概念

テンプレート セットとテンプレート コントロール

テンプレート レンダリングの実装

その他の技術情報

新しいデバイス アダプタおよびデバイス サポートの追加