コントロールは、テキスト ボックス、ボタン、チェック ボックス、リスト ボックス、ラベル、その他多くのツールを含む、グラフィカル ユーザー インターフェイスの小さな機能ブロックです。これらのツールを使用すると、ユーザーはデータを入力し、選択を行い、好みを示すことができます。
コントロールは、検証、データ アクセス、セキュリティ、マスター ページの作成、データ操作などの構造的な作業にも使用されます。
ASP.NET は、次の 5 種類の Web コントロールを使用します。
HTMLコントロール
HTMLサーバーコントロール
ASP.NETサーバーコントロール
ASP.NET Ajax サーバー コントロール
ユーザー コントロールとカスタム コントロール
ASP.NET サーバー コントロールは、ASP.NET で使用される主要なコントロールです。これらのコントロールは次のカテゴリに分類できます。
検証コントロール- ユーザー入力を検証し、クライアント側スクリプトを実行することで動作するために使用されます。
データ ソース コントロール- さまざまなデータ ソースへのデータ バインディング機能を提供します。
データ ビュー コントロール- このコントロールは、データ ソースからバインドされたデータを表示できるさまざまなリストとテーブルです。
パーソナライゼーション コントロール- ユーザー設定に基づくユーザー情報に基づいてページをパーソナライズします。
ログインとセキュリティの制御- ユーザー認証を提供します。
マスター ページ- アプリケーション全体にわたって一貫したレイアウトとインターフェイスを提供します。
ナビゲーション コントロール- ユーザーのナビゲーションを支援します。たとえば、メニュー、ツリービューなどです。
豊富な機能コントロール- 特別な機能を実装します。例: AdRotator、FileUpload、Calendar コントロール。
サーバー コントロールを使用するための基本的な構文は次のとおりです。
<asp:controlType ID ="ControlID" runat="server" Property1=value1 [Property2=value2] />
さらに、Visual Studio には、エラーのないコードを作成するために役立つ次の機能があります。
デザイン ビューでコントロールをドラッグ アンド ドロップします。
表示およびオートコンプリート機能のための IntelliSense 機能。
プロパティ値を直接設定するためのプロパティウィンドウ。
ビジュアル機能を備えた ASP.NET サーバー コントロールは WebControl クラスから派生し、このクラスのすべてのプロパティ、イベント、およびメソッドを継承します。
WebControl クラス自体と、視覚的な機能を持たないその他のサーバー コントロールは、System.Web.UI.Control クラスから派生します。たとえば、PlaceHolder コントロールや XML コントロールなどです。
ASP.Net サーバー コントロールは、WebControl クラスと System.Web.UI.Control クラスのすべてのプロパティ、イベント、メソッドを継承します。
次の表は、すべてのサーバー コントロールに共通のプロパティを示しています。
財産 | 説明する |
---|---|
アクセスキー | このキーと Alt キーを同時に押すと、コントロールにフォーカスが移動します。 |
属性 | これは、コントロール プロパティに対応しない任意のプロパティのコレクションです (ビューのレンダリングにのみ使用されます)。 |
背面の色 | 背景色。 |
バインディングコンテナ | データ バインドされたコントロールが含まれます。 |
枠線の色 | 枠線の色。 |
ボーダースタイル | ボーダースタイル。 |
境界線の幅 | 境界線の幅。 |
原因の検証 | 検証が発生した場合に表示されます。 |
ChildControl作成されました | サーバー コントロールの子コントロールが確立されているかどうかを示します。 |
クライアントID | HTMLタグのコントロールID。 |
コンテクスト | サーバー コントロールに関連付けられた HttpContext オブジェクト。 |
コントロール | コントロール内のすべてのコントロールのコレクション。 |
コントロールスタイル | Web サーバー コントロールのスタイル。 |
Cssクラス | CSS クラス。 |
データアイテムコンテナ | IDataItemContainer を実装する場合、命名者への参照を提供します。 |
データキーコンテナ | IDataKeysControl を実装する場合、命名者の参照を提供します。 |
デザインモード | コントロールがデザイン インターフェイスで使用されるかどうかを示します。 |
DisabledCssClass | コントロールが無効な場合に、レンダリングされた HTML 要素に適用する CSS クラスを取得または設定します。 |
有効 | コントロールが無効かどうかを示します。 |
テーマを有効にする | テーマがコントロールに適用されるかどうかを示します。 |
ビューステートを有効にする | コントロールのビュー状態を維持するかどうかを示します。 |
イベント | コントロールを表すイベント ハンドラーのリストを取得します。 |
フォント | フォントの設定。 |
前色 | 前景色。 |
属性あり | コントロールにプロパティ グループがあるかどうかを示します。 |
HasChildViewState | 現在のサーバー コントロールの子コントロールに保存されたビューステート設定があるかどうかを示します。 |
身長 | ピクセルまたはパーセント単位の高さ。 |
ID | コントロールの識別子。 |
IsChildControlStateCleared | このコントロール内に含まれるコントロールがコントロール状態を持つかどうかを示します。 |
有効です | コントロールが有効かどうかを示す値を取得します。 |
IsTrackingViewState | サーバー コントロールがビュー ステートへの変更を保存するかどうかを示します。 |
IsViewStateEnabled | このコントロールに対してビューステートが有効かどうかを示します。 |
LoadViewStateById | コントロールがインデックスではなく ID によってビューステートの読み込みに参加しているかどうかを示します。 |
ページ | コントロールを含むページ。 |
親 | ペアレンタルコントロール機能。 |
レンダリング互換性 | レンダリングされた HTML と互換性がある ASP.NET のバージョンを指定します。 |
サイト | デザインインターフェイスが表示されているときに現在のコントロールを保持するホルダー。 |
スキンID | コントロールに適用されるスキンを取得または設定します。 |
スタイル | Web サーバー コントロールの外部ラベルのスタイル プロパティとして表示されるテキスト プロパティのコレクションを取得します。 |
タブインデックス | Web サーバー コントロールのインデックス ラベルを取得または設定します。 |
タグキー | この Web サーバー コントロールに対応する HtmlTextWriterTag 値を取得します。 |
タグ名 | コントロールのラベルの名前を取得します。 |
テンプレートコントロール | このコントロールのテンプレートが含まれています。 |
テンプレートソースディレクトリ | このコントロール内に含まれるページまたはコントロールの仮想ディレクトリを取得します。 |
ツールチップ | マウス ポインターが Web サーバー コントロール上にあるときに表示されるテキストを取得または設定します。 |
固有ID | 一意の識別子。 |
ビューステート | 同じページへの複数のリクエストにわたるサーバー コントロール ビューの状態を保存および復元できる状態情報のディクショナリを取得します。 |
ViewStateIgnoreCase | StateBag オブジェクトが大文字と小文字を区別しないかどうかを示します。 |
ビューステートモード | このコントロールのビューステートを取得または設定します。 |
見える | サーバー コントロールが表示されるかどうかを示します。 |
幅 | Web サーバー コントロールの幅を取得または設定します。 |
サーバー コントロールのメソッドを次の表に示します。
方法 | 説明する |
---|---|
レンダリングする属性を追加 | 指定された HtmlTextWriterTag をレンダリングするために必要な HTML 属性とスタイルを追加します。 |
追加されたコントロール | 子コントロールがコントロール オブジェクトのコントロール コレクションに追加された後に呼び出されます。 |
AddParsedSubObject | XML または HTML の要素が解析されたことをサーバー コントロールに通知し、その要素をサーバー コントロールのコントロール コレクションに追加します。 |
スタイルシートスキンの適用 | ページ スタイル シートで定義されたスタイル プロパティをコントロールに適用します。 |
ClearCachedClientID | インフラストラクチャー。キャッシュされた ClientID 値を null に設定します。 |
ClearChildControlState | サーバー コントロールの子コントロールのコントロール状態情報を削除します。 |
ClearChildState | すべてのサーバー コントロールの子コントロールのビュー ステートとコントロール ステートの情報を削除します。 |
ClearChildViewState | すべてのサーバー コントロールの子コントロールのビュー ステート情報を削除します。 |
子コントロールの作成 | 子コントロールを作成するために使用されます。 |
コントロールコレクションの作成 | 子コントロールを保持する新しいコントロール コレクションを作成します。 |
コントロールスタイルの作成 | すべてのスタイル関連のプロパティを実装するスタイル オブジェクトを作成します。 |
データバインド | データ ソースをサーバー コントロールとそのすべての子コントロールにバインドします。 |
データバインド(ブール値) | DataBinding イベントを発生させるデータ ソースとオプションをサーバー コントロールとそのすべての子コントロールにバインドします。 |
データバインド子 | データ ソースをサーバー コントロールの子コントロールにバインドします。 |
処分する | サーバー コントロールがメモリから解放される前に最終クリーンアップ操作を実行できるようにします。 |
EnsureChildControls | サーバー コントロールに子コントロールが含まれるかどうかを判断します。そうでない場合は、子コントロールを作成します。 |
IDの確認 | 識別子を持たないコントロールの識別子を作成します。 |
等しい(オブジェクト) | 指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 |
ファイナライズ | オブジェクトがごみ箱によって再利用される前に、オブジェクトがリソースを解放し、他のクリーンアップ操作を実行できるようにします。 |
FindControl(文字列) | 現在の名前付きコンテナーで、指定された id パラメーターを持つサーバー コントロールを検索します。 |
FindControl(String, Int32) | 現在の名前付きコンテナーで、指定された id パラメーターと整数を使用してサーバー コントロールを検索します。 |
集中 | コントロールの入力フォーカスを設定します。 |
GetDesignModeState | コントロールのデザイン時データを取得します。 |
GetType | 現在のインスタンスのタイプを取得します。 |
GetUniqueIDRelativeTo | 指定されたコントロールの一意の ID プロパティの接頭辞部分を返します。 |
コントロールあり | サーバー コントロールに子コントロールが含まれるかどうかを判断します。 |
イベントあり | イベントがコントロールまたは他の子コントロールによって登録されたかどうかを示します。 |
IsLiteralContent | サーバー コントロールにテキスト コンテンツのみが含まれるかどうかを決定します。 |
ロードコントロール状態 | 制御状態情報を復元します。 |
ロードビューステート | ビューステート情報を復元します。 |
マップパスセキュア | 絶対または相対仮想パスがマッピングされている物理パスを取得します。 |
メンバーワイズクローン | 現在のオブジェクトの浅いコピーを作成します。 |
マージスタイル | 指定されたスタイルを持つ Web コントロールの空白以外の要素をコピーしますが、コントロールの既存のスタイル要素は上書きされません。 |
バブルイベント時 | サーバー コントロールのイベントがページの UI サーバー コントロール階層を通過するかどうかを決定します。 |
OnDataBinding | データ バインディング イベントを発生させます。 |
OnInit | Init イベントを発生させます。 |
オンロード | 読み込みイベントを発生させます。 |
OnPreRender | PreRender イベントを発生させます。 |
アンロード時 | アンインストール イベントを発生させます。 |
ファイルを開く | ファイルの読み取りに使用されるストリームを取得します。 |
削除されたコントロール | 子コントロールがコントロール オブジェクトのコントロール コレクションから削除された後に呼び出されます。 |
与える | 指定された HTML 作成者にコントロールを表示します。 |
レンダリング開始タグ | コントロールの HTML 開始タグを指定された作成者に表示します。 |
レンダーチルドレン | サーバー コントロールの子のコンテンツを提供された HtmlTextWriter オブジェクトに出力して、クライアント上に表示されるコンテンツを書き込みます。 |
レンダリングコンテンツ | コントロールのコンテンツを指定された作成者に表示します。 |
レンダーコントロール(HtmlTextWriter) | サーバー コントロールのコンテンツを提供された HtmlTextWriter オブジェクトに出力し、追跡が有効な場合はコントロールに関する追跡情報を保存します。 |
レンダー終了タグ | コントロールの HTML 終了タグを指定された作成者に表示します。 |
アダプターの解決 | 指定されたコントロールのレンダリングを担当するコントロール アダプターを取得します。 |
コントロール状態の保存 | ページがサーバーにポストバックされた後に発生したサーバー コントロールの状態変更を保存します。 |
ビューステートの保存 | TrackViewState メソッドの呼び出し後に変更された状態を保存します。 |
SetDesignModeState | コントロールの設計時データを設定します。 |
ToString | 現在のオブジェクトを表す文字列を返します。 |
トラックビュー状態 | コントロールがビューステートの変更を追跡し、オブジェクトの ViewState プロパティに変更を保存できるようにします。 |
特定のサーバー コントロール、つまりツリー ビュー コントロールを見てみましょう。ツリー ビュー コントロールはナビゲーション コントロールです。その他のナビゲーション コントロールには、メニュー コントロールと SiteMapPath コントロールがあります。
ツリー ビュー コントロールをページに追加します。タスクから [ノードの編集...] を選択し、次のようにツリー ビュー ノード エディタを使用して各ノードを編集します。
ノードが正常に作成されると、デザイン ビューに次の表示が表示されます。
AutoFormat... タスクを使用すると、ツリー ビューの形式を次のように指定できます。
ページにラベル コントロールとテキスト ボックス コントロールを追加し、それぞれ lblmessage と txtmessage という名前を付けます。
特定のノードが選択されたときに、ラベル コントロールにノード テキストが表示され、テキスト ボックスにはその下にあるすべての子ノード (存在する場合) が表示されるように、数行のコードを作成します。バックグラウンド ファイルのコードは次のようになります。
using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;namespace eventdemo { public partial class treeviewdemo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { txtmessage.Text = " "; } protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e) { txtmessage.Text = " "; lblmessage.Text = "Selected node changed to: " + TreeView1.SelectedNode.Text; TreeNodeCollection childnodes = TreeView1.SelectedNode.ChildNodes; if(childnodes != null) { txtmessage.Text = " "; foreach (TreeNode t in childnodes) { txtmessage.Text += t.Value; } } } }}
ページを実行して効果を確認すると、ノードを展開したり折りたたんだりできるようになります。