次の方法で共有


継承による機能の拡張

更新 : 2007 年 11 月

ASP.NET モバイル Web ページの機能を拡張するには、ユーザー コントロールの作成に加えて、継承を使用できます。既存の ASP.NET モバイル コントロール クラスから継承するクラスを作成する場合は、既存のメンバをオーバーライドするか、クラス用に新しいプロパティ、メソッド、およびイベントを作成して、機能を追加できます。

継承の使用によるクラスの作成

次のコード例は、CarList という名前の新しいクラスを示しています。このクラスは、List モバイル コントロールから継承され、自動車情報のレンダリング専用です。CarList クラスは、Car オブジェクトのリストへの連結に必要な情報をカプセル化します。

using System.Web.UI.MobileControls;

namespace myCompany.MobileControls
{
    class CarList : List
    {
        // Override OnInit, and set the DataValueField property
        // to the correct property of a Car object to use as the 
        // value of each list item.
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            this.DataValueField = "id";
        }
    
        // Override OnItemDataBind, and set the list item display 
        // text to a rich expression, containing the year, make, 
        // and model of the car.
        protected override void OnItemDataBind(ListDataBindEventArgs e)
        {
            base.OnItemDataBind(e);

            CarInfo car = (Car)e.DataItem;
            e.ListItem.Text = 
              String.Format("{0}{1}{2}", car.Year, car.Make, car.Model);
        }
    }
}

継承を使用してコントロールの機能を拡張する詳細な例については、ASP.NET Mobile Quickstart チュートリアルを参照してください。

新しいクラスの配置

この例のクラスを使用するには、クラスをアセンブリにコンパイルし、それをアプリケーションの Bin フォルダに格納します。次の例は、MyCompany.CarList.dll という名前のアセンブリを登録する方法を示しています。@ Register ディレクティブを使用し、カスタム タグを指定してページでアセンブリを登録します。

<%-- Register the myCompany.MobileControls namespace. --%>
<%@ Register TagPrefix="car" Namespace="myCompany.MobileControls" 
    Assembly="myCompany.CarList" %>
    // More code.
    <%-- Control declaration --%>
    <car:CarList id="myCarList" runat="server" />

継承したコントロールによって親クラスのレンダリング機能が変更されない場合でも、クラス用のアダプタを記述する必要はありません。前の例では、すべての CarList コントロールが List オブジェクトでもあるため、HtmlListAdapter など、現在のブラウザの List コントロールに割り当てられたアダプタが自動的に使用されます。ただし、CarList コントロールの専用のレンダリングを特定のデバイスで使用する場合は、アダプタを記述し、マッピングを Web.config ファイルに登録できます。

参照

その他の技術情報

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

カスタム モバイル コントロールの作成