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

適用対象: ASP.NET

この資料では、次の Microsoft .NET Framework クラス ライブラリの名前空間を参照しています。
  • System.Web.UI.HtmlControls.HtmlControl
  • System.Web.UI.WebControls.WebControl

概要


この資料では、ASP.NET サーバー コントロールの概要を説明します。

ASP.NET の概要に関するその他の情報については、次の「サポート技術情報」 (Microsoft Knowledge Base) の資料を参照してください。
305140 情報: ASP.NET ロードマップ

詳細情報


ASP.NET ページ フレームワークには、より高度に構造化された Web 向けのプログラミング モデルを提供するように設計された組み込みのサーバー コントロールが多数含まれています。 これらのコントロールでは、以下の機能が提供されます。
  • 自動的な状態管理
  • Request オブジェクトの使用を必要としない、オブジェクト値への簡単なアクセス
  • サーバー側のコードでイベントに対応し、より高度に構造化されたアプリケーションを作成する機能
  • Web ページ用のユーザー インターフェイスを構築するための共通のアプローチ
  • ブラウザの機能に応じた出力の自動的なカスタマイズ
また、組み込みのコントロールに加えて、ASP.NET ページ フレームワークはユーザー コントロールとカスタム コントロールを作成する機能も備えています。 ユーザー コントロールとカスタム コントロールは、既存のコントロールを強化して拡張し、より魅力的なユーザー インターフェイスを構築できます。
 

HTML サーバー コントロール

HTML サーバーコントロールは、 runat=server 属性を含むハイパーテキスト マークアップ言語 (HTML) 要素です。 HTML サーバー コントロールには、対応する HTML タグと同じ HTML 出力および同じプロパティがあります。 また、HTML サーバー コントロールには、自動状態管理とサーバー側イベントがあります。 HTML サーバー コントロールには、次のような利点があります。
  • HTML サーバー コントロールは、対応する HTML タグに一対一でマップされます。
  • 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 コントロールは、
ButtonTextBox、および Hyperlink のような HTML サーバーコントロールと非常によく似ています。ただし、Web コントロールに標準のプロパティ名が設定されている点を除きます。 Web サーバー コントロールには、以下の利点があります。
  • 製造元および開発者が、ユーザー インターフェイスを自動的に生成するツールやアプリケーションをより容易に構築できるようにします。
  • 対話的な Web フォームの作成手順を単純化し、HTML コントロールのしくみに関しての必要な知識量を減らし、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 プロパティを制御します。

リスト コントロールは、IEnumerableICollection または IListSource インターフェイスをサポートするコレクションのみにバインドできます。 次に Microsoft 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>
次に Microsoft 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>
出力は次のとおりです。
one

two

three
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 に変更します。
ユーザー コントロールの詳細については、次の Microsoft .NET Framework ソフトウェア開発キット (SDK) ドキュメントのトピックを参照してください。

カスタム コントロール

組み込みの Web コントロールに加えて、ASP.NET で独自のカスタム コントロールを作成することもできます。 次のいずれかのシナリオに該当する場合は、カスタム コントロールを開発すると便利な場合があります。
  • 複数の組み込みの Web コントロールの機能を組み合わせる必要がある場合
  • 組み込みのコントロールの機能を拡張する必要がある場合
  • 既存のコントロールとはまったく異なるコントロールが必要な場合
カスタム コントロールの開発の詳細については、以下の .NET Framework SDK ドキュメントのトピックを参照してください。