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

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

注:

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

コントロールを一覧表示する

リスト コントロールは、コレクションへのバインドをサポートする特殊な 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
  • three

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

豊富なコントロール

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

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

ユーザー コントロール

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

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

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

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

カスタム コントロール

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

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

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