Web控制項和Html控制項雖然好多功能相同且長得很像但是它們的內部實作機制是完全不一樣的
Web控制要比Html控制項執行效率好
1. 使用起來也相當方便,舉個簡單的例子,例如Button的生成:
Html控制項是將龐大控制項集合全部弄到頁面中,用到哪個功能,就設定一下屬性,如下:
<input type=submit/button runat=server>
這樣會佔用相當大的控制資源
Web控制項是將整合式的拆解成單一功能的:
<asp:button id="btnOK" />
這樣就可以節省不必要的控制項所佔用的資源了
2.Web控制項具有回傳功能,能夠用ViewState維持控制項的狀態.
Html控制則不能,當點擊頁面的操作,其狀態就會遺失.
可以做這樣的一個實驗:
I. 分別建立兩個檔案: 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,類似下面:
<input type="hidden" name="_VIEWSTATE" value="dDw0ajfmafmjfzzmj4"/>
其實ViewState實作原理也是將一些資訊放到隱藏的一個控制項中,而asp.net產生的ViewState資訊
是儲存在客戶端的
這裡要注意的一點是:
只有當格式為*.aspx文件,且控制項具有屬性:"runat=server"時,回傳功能才能開啟
3. Html控制項與Web控制項最大的差異是它們對事件處理的方法不同。對於Html窗體控件,
當引發一個事件時,瀏覽器會處理它。但對於Web控件,事件僅由瀏覽器生成,但瀏覽器不會處理它,客戶端要給伺服器發送訊息,告訴伺服器處理事件。 不過有些事件,
比如:
按下鍵/移動/滑鼠等事件,Asp.net中沒有這些事件
(因為這些事件即時性強,伺服器處理得不夠及時),這時候Html控制就發揮其作用了,結合Html事件
協助完成.
如下是一些Html常用的事件:
在瀏覽器上執行的Html控制項事件:
點選時觸發:
<INPUT type="button" value="Click Me" onclick="alert('Hi,你好!');">
滑鼠彈起時觸發:
<INPUT type="button" value="Click Me" onmouseup="alert('Hi,你好!');">
//懸浮在控制項上方時觸發
<INPUT type="button" value="Click Me" onmouseover="alert('Hi,你好!');">
//滑鼠在控制項上方移動時觸發
<INPUT type="button" value="Click Me" onmousemove="alert('Hi,你好!');">
//雙擊控制時觸發
<INPUT type="button" value="Click Me" ondblclick="alert('Hi,你好!');">
//當焦點在控制項時,按鍵時觸發
<INPUT type="button" value="Click Me" onkeypress="alert('Hi,你好!');">
//按鍵按下時觸發
<INPUT type="button" value="Click Me" onkeydown="alert('Hi,你好!');">