次の方法で共有


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

更新 : 2007 年 11 月

テンプレート レンダリングをサポートする ASP.NET モバイル コントロールは、既定のレンダリングもサポートします。複数のテンプレートを使用してレンダリングを構成する方法は、ターゲット デバイスによって異なります。ASP.NET には、テンプレート レンダリングをデバイス固有にする標準的な操作のシーケンスが用意されています。テンプレート レンダリングをサポートするモバイル コントロールは、次のシーケンスに従う必要があります。

  1. コントロールは、IsTemplated プロパティを使用して、デバイス テンプレートが定義され、選択されているかどうかを判断します。これを行うには、OnInit メソッドまたは CreateChildControls メソッドを使用します。

  2. テンプレートが定義されている場合、コントロールは、MobileControl 基本クラスから継承した CreateTemplatedUI メソッドを呼び出します。

    ah665120.alert_note(ja-jp,VS.90).gifメモ :

    コントロールがテンプレート化されていない場合は、CreateTemplatedUI を呼び出さないでください。

  3. CreateTemplatedUI は、コントロール アダプタの CreateTemplatedUI メソッドを呼び出します。このメソッドをオーバーライドするデバイス アダプタを記述して、デバイス固有のテンプレート レンダリングを実装できます。

  4. コントロール アダプタの CreateTemplatedUI メソッドの既定の実装は、コントロール アダプタの基本クラスで定義されており、コントロールの CreateDefaultTemplatedUI メソッドをコールバックします。このメソッドをオーバーライドするコントロールを作成して、一般的なテンプレート レンダリングを実装できます。

  5. アダプタの Render メソッドでは、コントロールがコントロールの子をレンダリングして、テンプレートをレンダリングします (テンプレートのインスタンスが作成されている場合)。

モバイル コントロールは、TemplateContainer から派生したコンテナ コントロール型の中に新しいテンプレートのインスタンスも常に作成する必要があります。この規則は、ASP.NET サーバー コントロールに対する規則よりも厳格です。ASP.NET サーバー コントロールの規則では、INamingContainer マーカー インターフェイスを実装することだけが要求されています。次のコード例は、モバイル コントロールのテンプレートのインスタンスを作成する方法を示しています。

void CreateChildTemplate(ITemplate template)
{
    TemplateContainer container = new TemplateContainer();
        template.InstantiateIn(container);
        container.DataBind();
        Controls.Add(container);
}

ItemCommand イベント

テンプレート レンダリングの場合、ASP.NET イベント バブル機構を使用して ItemCommand イベント ハンドラが呼び出されます。イベント ハンドラには、ソース項目およびイベントを生成したコントロールの CommandName プロパティを指すパラメータが渡されます。これによって、関連するいくつかのやり取りを伴って、単一の一覧項目を表示することができます。

既定のレンダリングでは、ユーザーが項目の一覧をクリックできる単純なユーザー インターフェイスがコントロール上に提供されます。ポストバック時、コントロールは、ItemCommand ハンドラを呼び出し、ソース項目を指す引数を渡します。CommandName プロパティは null を返します。

参照

処理手順

方法 : template 宣言された ASP.NET ユーザー コントロールを作成する

概念

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

その他の技術情報

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