ASP.NET Webフォームで使われるサーバーコントロールは、基本的には「Webサーバーコントロール」「HTMLサーバーコントロール」の2種類に加え、ユーザーが独自に作成する「ユーザーコントロール」の計3種類があります。
Webサーバーコントロール
Webサーバーコントロールは、Webアプリケーションに必要な機能を提供するコントロールです。
ラベルやテキストボックス、ボタンなど、基本的なものもありますが、カレンダーやグリッドビューなどの複雑な機能もあります。
また、HTMLサーバーコントロールとの違いとしては、コントロールとHTMLのタグが、必ずしも1対1に対応しているわけではないという点があります。
例として、カレンダー機能を挙げますが、この機能を提供するCalenderコントロールは配置すると「Table」タグと複数の「a」タグ(Tr,Td等)に変換されます。
このように、複数のタグの組み合わせにより高機能なコントロールを実装できるというのがWebサーバーコントロールの特徴であります。
中には、「検証コントロール」というものもあり、これはユーザーが入力した値に対して検証、つまりチェックを行うコントロールになります。
以下に挙げる例は、「CompareValidator」コントロールという、ユーザーが入力したデータを、もう一つのデータか定数と比較するコントロールですが、これ以外にも入力値が指定した書式になっているかというチェックを行うコントロールも用意されています。
これらは、やろうと思えばプログラムを書いて実装することは可能ですが、予めそういった機能を持つコントロールが実装されている分、開発を効率化できるという利点があります。
メールアドレスとメールアドレス(確認用)の入力内容が等しい
メールアドレスとメールアドレス(確認用)の入力内容が等しくない(メッセージが表示される)
HTMLサーバーコントロール
HTMLサーバーコントロールは、HTMLのタグをサーバーから操作するためのコントロールです。
例としてはinput、form、table等で、こちらはWebサーバーコントロールとは異なり、タグとコントロールが1対1で対応しています。
簡潔に言うと、従来のHTMLタグに対し、サーバーコントロールとしての機能を付与しただけのものとなります。
基本的には、ASP.NETでは高機能なものを実装できる等の観点からWebサーバーコントロールを優先して採用するべきですが、既存のHTMLページがあって、それをASP.NET化させたい場合や、緻密にHTMLタグを操作したい場合などにこちらを検討することもあるので、覚えておいても損は無いでしょう。
ユーザーコントロール
ユーザーコントロールは、厳密には前述の2種とはカテゴリが異なるものです。
ざっくり言うと、「開発者(ユーザー)がコントロールを組み合わせて独自に作成したコントロール」のことです。
より簡潔に説明すると、「Webページのヘッダー等の、いわゆる「テンプレート」となる部分を他のWebページでも使いまわしができるように部品化させたもの」になります。
Webフォームと同様に、各種サーバーコントロールを組み合わせて作成するため、「部品化したWebフォーム」と呼んでもいいでしょう。