Web コントロールと HTML コントロールは多くの類似した機能を備えており、見た目も似ていますが、内部の実装メカニズムはまったく異なります。
Web コントロールは、HTML コントロール 1 よりもパフォーマンスが高く、
非常に使いやすいです。ボタンの生成などの簡単な例を次に示します。
HTML コントロールは、コントロールの膨大なコレクションをすべてページに配置します。どの機能が使用されるかは、次のようにプロパティを設定するだけです。
<input type=submit/button runat=server>
、Web コントロールが単一の機能に統合されるため、
かなりの量の制御リソースを占有します。
<asp:button id="btnOK" />
これにより、不要なコントロールによって占有されるリソースを節約できます。2
. Web コントロールにはコールバック関数があり、ViewState を使用してコントロールの状態を維持できます。
HTML コントロールでは、ページ操作をクリックするとその状態が失われます。
次のような実験を行うことができます。
I. 2 つのファイルをそれぞれ作成します: a.html b.aspx
II. HTML コントロールの RadioButton とボタンを a.html ページに追加します。
Web コントロールの RadioButton とボタンを b.aspx に追加します。
III.a.html はブラウザをダブルクリックして直接実行され、b.aspx は IIS を通じて実行されます。
IV. a.html 実行インターフェイスで、[RadioButton] を選択し、[Button] ボタンをクリックします。
チェックを外します (状態は失われます)。ただし、b.aspx ページで同じ操作を実行すると、ViewState が設定されているため、RadioButton は失われません。
ステータスが保存されます。実行インターフェースのブラウザメニューで「表示」→「ソースファイル」をクリックすると、HTML コードファイルを開くことができます。
次のような、暗号化された ViewState を見つけます。
<input type="hidden" name="_VIEWSTATE" value="dDw0ajfmafmjfzzmj4"/>
実際、ViewState の実装原則は、隠しコントロールに情報を入れることであり、asp.net によって生成された ViewState 情報は
クライアントに保存されます。
ここで注意すべき点が 1 つあります。
ループバック機能は、形式が *.aspx ファイルで、コントロールに「runat=server」属性がある場合にのみオンにできます。
3. HTML コントロールと Web コントロールの最大の違いは、イベント処理方法が異なることです。 HTMLフォームコントロールの場合、
イベントが発生すると、ブラウザーがそれを処理します。ただし、Web コントロールの場合、イベントはブラウザーによってのみ生成されますが、ブラウザーはそれを処理しません。クライアントはサーバーにメッセージを送信して、イベントを処理するようにサーバーに指示する必要があります。 ただし、一部のイベントでは、
例えば:
キーの押下/移動/マウスなどのイベント。これらのイベントは Asp.net では使用できません。
(これらのイベントは即時性が高いため、サーバーはこれらを十分に迅速に処理できません。) このとき、HTML コントロールが機能し、HTML イベントと組み合わせて、
プロセスの完了を支援します。
次に、HTML で一般的に使用されるイベントをいくつか示します。
ブラウザ上で実行される HTML コントロール イベント:
クリックされたときにトリガーされます:
<INPUT type="button" value="Click Me" onclick="alert('Hi, Hello!');">
マウスがバウンドするとトリガーされます。
<INPUT type="button" value="Click Me" onmouseup="alert('Hi, Hello!');">
//コントロールの上にマウスを置くとトリガーされます
<INPUT type="button" value="Click Me" onmouseover="alert('Hi, Hello!');">
//マウスがコントロールの上に移動するとトリガーされます
<INPUT type="button" value="Click Me" onmousemove="alert('Hi, Hello!');">
//コントロールがダブルクリックされるとトリガーされます
<INPUT type="button" value="Click Me" ondblclick="alert('Hi, Hello!');">
//コントロールにフォーカスがある場合、キーが押されたときにトリガーされます
<INPUT type="button" value="Click Me" onkeypress="alert('Hi, Hello!');">
//キーが押されたときにトリガーされます
<INPUT type="button" value="クリックしてください" onkeydown="alert('こんにちは、こんにちは!');">