比較ASP.NETのhtmlコントロールとwebコントロール



htmlコントロールとwebコントロールは多くの機能が同じで似ているが、内部実装メカニズムは全く異なり、WebコントロールはHtmlコントロールよりも実行効率が良い.   
htmlコントロールとwebコントロールの比較1:使いやすくて、簡単な例を挙げて、例えばButtonの生成:
Htmlコントロールは、膨大なコントロールのセットをすべてページに取り込み、どの機能を使用するか、次のように属性を設定します.

  
  
  
  
  1. < input type=submit/button runat=server>  

これにより、かなりのコントロールリソースが消費されます.
Webコントロールは、統合された機能を単一の機能に分解します.

  
  
  
  
  1. < asp:button id="btnOK" />  

これにより、不要なコントロールに使用されるリソースを節約できます.
htmlコントロールとwebコントロールの比較2:Webコントロールは返信機能を有し、View Stateでコントロールの状態を維持することができる.Htmlコントロールはできませんが、ページの操作をクリックすると、その状態が失われます.
このような実験を行うことができます.
I.それぞれ2つのファイルを作成する:a.html b.aspx
II.a.htmlページにHtmlコントロールのRadioButtonとbutton、b.aspxにWebコントロールのRadioButtonとbuttonを追加
III.a.htmlはブラウザを直接ダブルクリックして実行し、b.aspxはIISで実行する
IV.a.html実行画面でRadioButtonを選択し、Buttonボタンをクリックすると、RadioButtonが
選択を解除(ステータスを失う)が、b.aspxページで同じ操作を実行すると、RadioButtonはViewStateのため失われません.
ステータスを保存しました.実行インタフェースでブラウザメニュー「表示」->「ソースファイル」をクリックし、Htmlコードファイルを開くことができます.
次のような暗号化されたViewStateが見つかりました.

  
  
  
  
  1. < input type="hidden" name="_VIEWSTATE" value="dDw0ajfmafmjfzzmj4"/>  

実はViewStateの実現原理もいくつかの情報を隠れたコントロールの中に置いて、そしてasp.Netで生成するViewState情報はクライアントに格納されるが,ここで注意すべき点は,フォーマットが*である場合のみである.aspxファイルで、コントロールに属性がある場合:runat=server
htmlコントロールとwebコントロールの比較3:HtmlコントロールとWebコントロールの最大の違いは、イベント処理の方法が異なることです.Htmlフォームコントロールでは、イベントが開始されるとブラウザが処理します.ただし、Webコントロールの場合、イベントはブラウザのみで生成されますが、ブラウザは処理しません.クライアントはサーバにイベントの処理を通知します.しかし、キーを押す/移動する/マウスを押すなどのイベントがあります.asp.Netにはこれらのイベントはない(これらのイベントは即時性が強く、サーバの処理がタイムリーではないため)、このときHtmlコントロールがその役割を果たし、Htmlイベントと組み合わせて協力して完成する.
Htmlでよく使用されるイベントは次のとおりです.
ブラウザで実行されるHtmlコントロールイベント:
クリック時にトリガー:

  
  
  
  
  1. < INPUT type="button" value="Click Me" onclick="alert('Hi, !');">  

マウスが跳ね上がるとトリガーされます.

  
  
  
  
  1. < INPUT type="button" value="Click Me" onmouseup="alert('Hi, !');">  

コントロールの上に浮かぶとトリガーされます

  
  
  
  
  1. < INPUT type="button" value="Click Me" onmouseover="alert('Hi, !');">  

マウスがコントロール上を移動するとトリガーされます

  
  
  
  
  1. < INPUT type="button" value="Click Me" onmousemove="alert('Hi, !');">  

//コントロールをダブルクリックするとトリガー

  
  
  
  
  1. < INPUT type="button" value="Click Me" ondblclick="alert('Hi, !');">   

//コントロールにフォーカスがある場合、キーを押すとトリガーされます

  
  
  
  
  1. < INPUT type="button" value="Click Me" onkeypress="alert('Hi, !');">  

//押すとトリガー

  
  
  
  
  1. < INPUT type="button" value="Click Me" onkeydown="alert('Hi, !');">    

バックグラウンドとのインタラクションを必要としない場合にHTMLコントロールを使用すると、その占有するリソースが少なく、速度も速く、バックグラウンドとのインタラクションが必要な場合にはWEBコントロールを使用するか、HTMLコントロールにrunat=「server」を加えて1つのHTMLコントロールを成約相互コントロールに変換することもできますが、このように占有するリソースはWebコントロールと何の違いもありません.
WEBコントロールはサーバー側イベントに応答でき、バックグラウンドコードに関連属性や方法などを設定できます!HTMLは不可、WEBサーバコントロールはサーバ処理後にHTMLコントロールに訳してブラウザに送信する必要があるため、サーバリソースが比較的消費され、IEWSTATEがあるため、返信時にコントロール状態を保つ(保存しない設定も可能)ため、返信情報量が増加する.HTMLはブラウザに直接送信され、サーバリソースは別途消費されませんが、ステータス保存はありません.   
HTMLコントロールの値を得るにはREQUESTのFORMメソッドを使う必要があり、WEBコントロールは直接属性で処理できます!  
したがって、一般的には、コントロールの状態を保存する必要がなく、値の処理がない場所でHTMLを使用することができます.コントロールを動的に処理する必要がある場合や、その状態を保存する必要がある場合などは、WEBサーバのコントロールを使用することができます.WEBサーバコントロールは使いやすいと思いますが、サーバリソースを別途消費します!  
多くの本では、性能を考えるとWEBサーバーのコントロールを使わないところでできるだけ使わないと言われています.   
いつ使うか、いつ使うかは具体的な状況を見て、条件がゆったりしている場合は個人の習慣を見てみましょう.
違いはサーバコントロールにrunat=serverが必要でなければhtmlを使い、webはリソースを浪費しすぎることです.