次の方法で共有


ASP.NET サーバー コントロールの概要

この記事では、HTML サーバー コントロール、Web サーバー コントロール、リスト コントロールなど、ASP.NET サーバー コントロールについて説明します。

元の製品バージョン: ASP.NET
元の KB 番号: 306459

この記事では、次の Microsoft .NET Framework クラス ライブラリ名前空間について説明します。

  • System.Web.UI.HtmlControls.HtmlControl
  • System.Web.UI.WebControls.WebControl

ASP.NET ページ フレームワークのサーバー コントロール

ASP.NET ページ フレームワークには、Web 用のより構造化されたプログラミング モデルを提供するように設計された多数の組み込みサーバー コントロールが含まれています。 これらのコントロールには、次の機能があります。

  • 自動状態管理。
  • Request オブジェクトを使用しなくても、オブジェクト値に簡単にアクセスできます。
  • サーバー側コードのイベントに対応して、より構造化されたアプリケーションを作成する機能。
  • Web ページのユーザー インターフェイスを構築するための一般的なアプローチ。
  • 出力は、ブラウザーの機能に基づいて自動的にカスタマイズされます。

ASP.NET ページ フレームワークには、組み込みのコントロールに加えて、ユーザー コントロールとカスタム コントロールを作成する機能も用意されています。 ユーザー コントロールとカスタム コントロールを使用すると、既存のコントロールを拡張して、より豊富なユーザー インターフェイスを構築できます。

HTML サーバー コントロール

HTML サーバー コントロールは、 runat=server 属性を含む HTML 要素です。 HTML サーバー コントロールには、対応する HTML タグと同じ HTML 出力と同じプロパティがあります。 さらに、HTML サーバー コントロールは、自動状態管理とサーバー側イベントを提供します。 HTML サーバー コントロールには、次の利点があります。

  • HTML サーバー コントロールは、対応する HTML タグを使用して 1 つにマップします。
  • ASP.NET アプリケーションがコンパイルされると、 runat=server 属性を持つ HTML サーバー コントロールがアセンブリにコンパイルされます。
  • ほとんどのコントロールには、最も一般的に使用されるコントロールのイベントの OnServerEvent が含まれます。 たとえば、 <input type=button> コントロールには OnServerClick イベントがあります。
  • 特定の HTML サーバー コントロールとして実装されていない HTML タグは、サーバー側で引き続き使用できます。ただし、 HtmlGenericControlとしてアセンブリに追加されます。
  • ASP.NET ページが再ポストされると、HTML サーバー コントロールは値を保持します。

System.Web.UI.HtmlControls.HtmlControl基本クラスには、すべての共通プロパティが含まれています。 HTML サーバー コントロールは、このクラスから派生します。

HTML サーバー コントロールを使用するには、次の構文を使用します ( HtmlInputText コントロールを例として使用します)。

<input type="text" value="hello world" runat=server />

ASP.NET で使用できる個々の HTML サーバー コントロールの詳細については、次の Web サイトを参照してください。

Web サーバー コントロール

Web コントロールは、Button、TextBox、Hyperlink などの HTML サーバー コントロールに似ていますが、Web コントロールには標準化されたプロパティ名のセットがあることを除きます。 Web サーバー コントロールには、次の利点があります。

  • 製造元や開発者が、ユーザー インターフェイスを自動的に生成するツールやアプリケーションを簡単に構築できるようにします。
  • 対話型 Web フォームを作成するプロセスを簡略化します。HTML コントロールの動作に関する知識が少なくて済み、それらを使用するタスクがエラーになりにくくなります。

System.Web.UI.WebControls.WebControl基本クラスには、すべての共通プロパティが含まれています。 ほとんどの Web サーバー コントロールは、このクラスから派生します。

Web サーバー コントロールを使用するには、次の構文を使用します (TextBox コントロールを例として使用します)。

<asp:textbox text="hello world" runat=server />

Web サーバー コントロールは、次の 4 つのカテゴリに分類できます。

  • 基本的な Web コントロール
  • 検証コントロール
  • リスト コントロール
  • リッチ コントロール

基本的な Web コントロール

基本的な Web コントロールは、対応する HTML サーバー コントロールと同じ機能を提供します。 ただし、基本的な Web コントロールには、プログラミングできる追加のメソッド、イベント、およびプロパティが含まれます。

ASP.NET で使用できる個々の Web コントロールの詳細については、次の Web サイトを参照してください。

検証コントロール

検証コントロールは、ページの他のコントロールに入力された値を検証するために使用されます。 検証コントロールは、ページが表示されるブラウザーの機能に応じて、クライアント側の検証、サーバー側の検証、またはその両方を実行します。 検証コントロールには、次の利点があります。

  • 検証する各コントロールに 1 つ以上の検証コントロールを関連付けることができます。
  • 検証は、ページ フォームが送信されるときに実行されます。
  • 検証を実行するかどうかをプログラムで指定できます。これは、すべてのフィールドに有効なデータを入力しなくてもユーザーが終了できるようにキャンセル ボタンを指定する場合に便利です。
  • 検証コントロールは、検証をクライアント側またはサーバー側で実行する必要があるかどうかを自動的に検出します。

Note

クライアント側の検証では、ポストバック操作が完了する前にエラーがキャッチされます。 そのため、1 つのページにクライアント側とサーバー側の検証コントロールの組み合わせがある場合、クライアント側の検証が失敗した場合、サーバー側の検証が優先されます。ASP.NET で使用できる個々の検証コントロールの詳細については、次の Web サイトを参照してください。

List コントロール

リスト コントロールは、コレクションへのバインドをサポートする特別な Web サーバー コントロールです。 リスト コントロールを使用すると、カスタマイズされたテンプレートの形式でデータの行を表示できます。 すべてのリスト コントロールは、コレクションへのバインドに使用される DataSource プロパティと DataMember プロパティを公開します。

リスト コントロールは、IEnumerable、ICollection、または IListSource インターフェイスをサポートするコレクションにのみバインドできます。 たとえば、Visual C# .NET サンプル ページは次のように表示されます。

<%@ Page Language="C#" %>
<script runat="server">
    Public void Page_Load()
    {
        String[] myStringArray = new String[] {"one","two","three"};
        rptr.DataSource = myStringArray;
        rptr.DataBind();
    }
</script>
<html>
    <body>
        <asp:repeater id=rptr runat="server">
            <itemtemplate><%# Container.DataItem %><br></itemtemplate>
        </asp:repeater>
    </body>
</html>

Visual Basic .NET のサンプル ページは次のように表示されます。

<%@ Page Language="vb" %>
<script runat="server">
    public sub Page_Load()
        Dim myStringArray as String()
        myStringArray = new String() {"one","two","three"}
        rptr.DataSource = myStringArray
        rptr.DataBind()
    end sub
</script>
<html>
    <body>
        <asp:repeater id=rptr runat="server">
            <itemtemplate><%# Container.DataItem %><br></itemtemplate>
        </asp:repeater>
    </body>
</html>

出力は次のようになります。

  • 1
  • 2 つ
  • 3 つ

ASP.NET で使用できる個々のリスト コントロールの詳細については、次の Web サイトを参照してください。

豊富なコントロール

上記のコントロールに加えて、ASP.NET ページ フレームワークには、リッチ コントロールと呼ばれるタスク固有のコントロールがいくつか用意されています。 豊富なコントロールは、複数の HTML 要素で構築され、豊富な機能を備えています。 豊富なコントロールの例として、Calendar コントロールと AdRotator コントロールがあります。

ASP.NET で使用できる個々のリッチ コントロールの詳細については、次の Web サイトを参照してください。

ユーザー向けの制御

多くの場合、追加のコードを記述しなくても、Web フォームのユーザー インターフェイスを再利用できます。 ASP.NET では、Web フォームをユーザー コントロールに変換することでこれを行うことができます。 .ascx ファイル拡張子を持つユーザー コントロールは、1 つの Web フォーム内で複数回使用できます。

Web フォームをユーザー コントロールに変換するには、次の手順に従います。

  1. すべての <html><head><body>、および <form> タグを削除します。
  2. ページに @ Page ディレクティブが表示される場合は、 @ Controlに変更します。
  3. インスタンス化するときにユーザー コントロールが厳密に型指定されるように、@ Control ディレクティブにclassName属性を含めます。
  4. コントロールにわかりやすいファイル名を付け、ファイル拡張子を .aspx から .ascx に変更します。

ユーザー コントロールの詳細については、「 Web フォーム ユーザー コントロールを参照してください。

カスタム コントロール

ASP.NET では、組み込みの Web コントロールに加えて、独自のカスタム コントロールを作成することもできます。 次のいずれかのシナリオに直面している場合は、カスタム コントロールを開発すると便利な場合があります。

  • 2 つ以上の組み込み Web コントロールの機能を組み合わせる必要があります。
  • 組み込みコントロールの機能を拡張する必要があります。
  • 現在存在するコントロールとは異なるコントロールが必要です。

カスタム コントロールの開発の詳細については、次のトピックを参照してください。