1、html控件:就是我們通常的說(shuō)的html語(yǔ)言標(biāo)記,這些語(yǔ)言標(biāo)記在已往的靜態(tài)頁(yè)面和其他網(wǎng)頁(yè)里存在,不能在服務(wù)器端控制的,只能在客戶(hù)端通過(guò)javascript和vbscript等程序語(yǔ)言來(lái)控制。如:<input
type="button" id="btn" value="button"/>
2、html服務(wù)器控件:其實(shí)就是html控件的基礎(chǔ)上加上runat="server"所構(gòu)成的控件。它們的注意區(qū)別是運(yùn)行方式不同,html控件運(yùn)行在客戶(hù)端,而html服務(wù)器控件是運(yùn)行在服務(wù)器端的。參考其他資料是這樣說(shuō)的:當(dāng)ASP.NET網(wǎng)頁(yè)執(zhí)行時(shí),會(huì)檢查標(biāo)注有無(wú)runat
屬性,如果標(biāo)注沒(méi)有設(shè)定,那么Html標(biāo)注就會(huì)被視為符串,并被送到字符串流等待送到客戶(hù)端,客戶(hù)端的瀏覽器會(huì)對(duì)其進(jìn)行解釋。如果Html標(biāo)注有設(shè)定runat="server"
屬性,Page
對(duì)象會(huì)將該控件放入控制器,服務(wù)器端的代碼就能對(duì)其進(jìn)行控制,等到控制執(zhí)行完畢后再將Html服務(wù)器控件的執(zhí)行結(jié)果轉(zhuǎn)換成Html標(biāo)注,然后當(dāng)成字符串流發(fā)送到客戶(hù)端進(jìn)行解釋。如:<input
id="Button" type="button" value="button" runat="server" />
3、web服務(wù)器控件:也稱(chēng)asp.net服務(wù)器控件,是Web
Form編程的基本元素,也是asp.net所特有的。它會(huì)按照client的情況產(chǎn)生一個(gè)或者多個(gè)html控件,而不是直接描述html元素。如:
<asp:Button ID="Button2" runat="server"
Text="Button"/>那么它和html服務(wù)器控件有什么區(qū)別呢?參照其他網(wǎng)頁(yè)的資料看法如下:
1)、Asp.net服務(wù)器控件提供更加統(tǒng)一的編程接口,如每個(gè)Asp.net服務(wù)器控件都有Text屬性。
2)、隱藏客戶(hù)端的不同,這樣程序員可以把更多的精力放在業(yè)務(wù)上,而不用去考慮客戶(hù)端的瀏覽器是ie還是firefox,或者是移動(dòng)設(shè)備。
3)、Asp.net服務(wù)器控件可以保存狀態(tài)到ViewState里,這樣頁(yè)面在從客戶(hù)端回傳到服務(wù)器端或者從服務(wù)器端下載到客戶(hù)端的過(guò)程中都可以保存。
4)、事件處理模型不同,Html標(biāo)注和Html服務(wù)器控件的事件處理都是在客戶(hù)端的頁(yè)面上,而Asp.net服務(wù)器控件則是在服務(wù)器上,舉例來(lái)說(shuō):
<input id="Button4" type="button" value="button"
runat="server"/>是Html服務(wù)器控件,此時(shí)我們點(diǎn)擊此按鈕,頁(yè)面不會(huì)回傳到服務(wù)器端,原因是我們沒(méi)有為其定義鼠標(biāo)點(diǎn)擊事件。
<input id="Button4" type="button" value="button" runat="server"
onserverclick="test"
/>我們?yōu)镠tml服務(wù)器控件添加了一個(gè)onserverclick事件,點(diǎn)擊此按鈕頁(yè)面會(huì)發(fā)回服務(wù)器端,并執(zhí)行test(object sender,
EventArgs e)方法。
<asp:Button ID="Button2" runat="server" Text="Button"
/>是Asp.net服務(wù)器控件,并且我們沒(méi)有為其定義click,但是我們點(diǎn)擊時(shí),頁(yè)面也會(huì)發(fā)回到服務(wù)器端。
由此可見(jiàn):Html標(biāo)注和Html服務(wù)器控件的事件是由頁(yè)面來(lái)觸發(fā)的,而Asp.net服務(wù)器控件則是由頁(yè)面把Form發(fā)回到服務(wù)器端,由服務(wù)器來(lái)處理。
asp.net什么時(shí)候用服務(wù)器控件,什么時(shí)候用html控件?
服務(wù)器控件服務(wù)器端運(yùn)行,和服務(wù)器有交互數(shù)據(jù)的時(shí)候比較好用。html控件客戶(hù)端運(yùn)行,客戶(hù)端判斷客戶(hù)行為時(shí)候好用。根據(jù)不同需求用的不一樣。html控件是在客戶(hù)端運(yùn)行的,Web控件是在服務(wù)器端運(yùn)行后返回給客戶(hù)端的。
asp.net控件是服務(wù)端控件,響應(yīng)服務(wù)端事件。HTML控件是客戶(hù)端控件,響應(yīng)客戶(hù)端事件。簡(jiǎn)單來(lái)說(shuō),
HTML客戶(hù)端的事件是不會(huì)提交給服務(wù)端的,比如說(shuō)點(diǎn)擊一個(gè)按鈕改變文字的顏色,只是針對(duì)用戶(hù)機(jī)器本身的,不會(huì)發(fā)送數(shù)據(jù)包給遠(yuǎn)程的服務(wù)器。而asp.net按鈕點(diǎn)擊后,將會(huì)以post或者get形式發(fā)送給服務(wù)器,進(jìn)行數(shù)據(jù)庫(kù)操作等等,頁(yè)面提交后將會(huì)刷新。但是ajax技術(shù)可以使客戶(hù)端控件發(fā)送請(qǐng)求給webservice。
具體的用法,如果強(qiáng)調(diào)客戶(hù)端的應(yīng)用,用客戶(hù)端控件更能使用戶(hù)感覺(jué)到方便,不用刷新頁(yè)面。而需要數(shù)據(jù)庫(kù)等操作時(shí)肯定要用服務(wù)端控件。但是沒(méi)有絕對(duì)的,做的項(xiàng)目就是兩者結(jié)合用,不能一味用服務(wù)器端控件,會(huì)加重服務(wù)器負(fù)擔(dān)的。