偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Asp.net控件之異同:HTML控件與Web服務(wù)器控件

開發(fā) 后端
Asp.net控件庫十分強(qiáng)大,包括web服務(wù)器控件,web用戶控件,web自定義控件,html服務(wù)器控件和html控件等。這里主要介紹html控件、html服務(wù)器控件和web服務(wù)器控件的區(qū)別。

Asp.net之所以現(xiàn)在開發(fā)方便和快捷,關(guān)鍵是它有一組強(qiáng)大的控件庫,包括web服務(wù)器控件,web用戶控件,web自定義控件,html服務(wù)器控件和html控件等。這里我主要說說html控件、html服務(wù)器控件和web服務(wù)器控件的區(qū)別。

asp.net控件介紹

1、html控件:就是我們通常的說的html語言標(biāo)記,這些語言標(biāo)記在已往的靜態(tài)頁面和其他網(wǎng)頁里存在,不能在服務(wù)器端控制的,只能在客戶端通過javascript和vbscript等程序語言來控制。

  1. < input type="button" id="btn" value="button"/>   

2、html服務(wù)器控件:其實(shí)就是html控件的基礎(chǔ)上加上runat="server"所構(gòu)成的控件.它們的注意區(qū)別是運(yùn)行方式不同,html控件運(yùn)行在客戶端,而html服務(wù)器控件是運(yùn)行在服務(wù)器端的。參考其他資料是這樣說的:       當(dāng)ASP.NET 網(wǎng)頁執(zhí)行時(shí),會(huì)檢查標(biāo)注有無runat 屬性,如果標(biāo)注沒有設(shè)定,那么Html標(biāo)注就會(huì)被視為字符串,并被送到字符串流等待送到客戶端,客戶端的瀏覽器會(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ā)送到客戶端進(jìn)行解釋 

  1. < input id="Button" type="button" value="button" runat="server" />      

3、web服務(wù)器控件:也稱asp.net服務(wù)器控件,是Web Form編程的基本元素,也是asp.net所特有的。它會(huì)按照client的情況產(chǎn)生一個(gè)或者多個(gè)html控件,而不是直接描述html元素。如: 

  1. < asp:Button ID="Button2" runat="server" Text="Button"/>   

那么它和html服務(wù)器控件有什么區(qū)別呢?參照其他網(wǎng)頁的資料看法如下:

1、 Asp.net服務(wù)器控件提供更加統(tǒng)一的編程接口,如每個(gè)Asp.net服務(wù)器控件都有Text屬性。

2、 隱藏客戶端的不同,這樣程序員可以把更多的精力放在業(yè)務(wù)上,而不用去考慮客戶端的瀏覽器是ie還是firefox,或者是移動(dòng)設(shè)備。
 
3、 Asp.net服務(wù)器控件可以保存狀態(tài)到ViewState里,這樣頁面在從客戶端回傳到服務(wù)器端或者從服務(wù)器端下載到客戶端的過程中都可以保存。

4、 事件處理模型不同,Html標(biāo)注和Html服務(wù)器控件的事件處理都是在客戶端的頁面上,而Asp.net服務(wù)器控件則是在服務(wù)器上,舉例來說:

  1. < input id="Button4" type="button" value="button" runat="server"/>   


是Html服務(wù)器控件,此時(shí)我們點(diǎn)擊此按鈕,頁面不會(huì)回傳到服務(wù)器端,原因是我們沒有為其定義鼠標(biāo)點(diǎn)擊事件。

  1. < input id="Button4" type="button" value="button" runat="server" onserverclick="test" />    

我們?yōu)镠tml服務(wù)器控件添加了一個(gè)onserverclick事件,點(diǎn)擊此按鈕頁面會(huì)發(fā)回服務(wù)器端,并執(zhí)行test(object sender, EventArgs e)方法。

  1. < asp:Button ID="Button2" runat="server" Text="Button" />   


是Asp.net服務(wù)器控件,并且我們沒有為其定義click,但是我們點(diǎn)擊時(shí),頁面也會(huì)發(fā)回到服務(wù)器端。
 
由此可見:Html標(biāo)注和Html服務(wù)器控件的事件是由頁面來觸發(fā)的,而Asp.net服務(wù)器控件則是由頁面把Form發(fā)回到服務(wù)器端,由服務(wù)器來處理。

下面我就結(jié)合我自己的測(cè)試來說明問題:

 這段代碼是我放在repeat中的模板里的:其中DeleteCheck是一個(gè)js腳本函數(shù),注意是用于是否發(fā)送到服務(wù)器端的,這里就不展示腳本代碼了。  

  1. < input runat="server" type="button" id="delete" value="Server button" />    
  2.   < input type="button" onclick="return DeleteCheck(this)" id="Button1" value="Client button" />    
  3.   < input runat="server" type="submit" onclick="return DeleteCheck(this)" id="Button2" value="Server submit" />    
  4.   < input type="submit" onclick="return DeleteCheck(this)" id="Button3" value="Client submit" />    
  5.   < button runat="server" id="button4" onclick="return DeleteCheck(this)" value="Button-Button">Button-Button    
  6.   < asp:Button runat="server" ID="button5" OnClientClick="return DeleteCheck(this)" Text="Asp:button" />   


展現(xiàn)出來的html代碼如下: 
 

  1. < input name="Data$ctl03$delete" type="button" id="Data_ctl03_delete" value="Server button" />    
  2.   < input type="button" onclick="return DeleteCheck(this)" id="Button1" value="Client button" />    
  3.  < input name="Data$ctl03$Button2" type="submit" id="Data_ctl03_Button2" onclick="return DeleteCheck(this)" value="Server submit" / >     
  4.   < input ut type="submit" onclick="return DeleteCheck(this)" id="Button3" value="Client submit" />    
  5.   < button id="Data_ctl03_button4" onclick="return DeleteCheck(this)" value="Button-Button">Button-Button   
  6.  < input type="submit" name="Data$ctl03$button5" value="Asp:button" onclick="return DeleteCheck(this);" id="Data_ctl03_button5" />    

asp.net控件總結(jié)

可以看出以下幾點(diǎn):

1、當(dāng)控件屬性中有runat="server"時(shí),生成的html控件時(shí)name和id發(fā)生的變化(.net Framework)。
2、當(dāng)asp:button服務(wù)器按鈕通過生成的頁面后轉(zhuǎn)化成類型為submit類型的Client控件。
3、當(dāng)控件是html控件時(shí)通過生成的頁面和原來的html代碼完全一樣(理由上面已經(jīng)說名)。
 
另外我還測(cè)試了把這段代碼直接放到form標(biāo)記中(不放到其他子標(biāo)記中)如:   
 

  1. < input runat="server" type="button" id="delete" value="Server button" onserverclick="delete_ServerClick" />    
  2. < input type="button" onclick="return DeleteCheck(this)" id="Button1" value="Client button" />    
  3. < input runat="server" type="submit" onclick="return DeleteCheck(this)" id="Button2" value="Server submit" />    
  4. < input type="submit" onclick="return DeleteCheck(this)" id="Button3" value="Client submit" />    
  5. < button runat="server" id="button4" onclick="return DeleteCheck(this)" value="Button-Button">Button-Button    
  6. < asp:Button runat="server" ID="button5" OnClientClick="return DeleteCheck(this)" Text="Asp:button" OnClick="button5_Click" />    
  7. < asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click"> 

直接放到form標(biāo)記中生成的html代碼 

  1. < script type="text/javascript">    
  2. < !--    
  3. var theForm = document.forms['form1'];    
  4. if (!theForm) {    
  5.     theForm = document.form1;    
  6. }    
  7. function __doPostBack(eventTarget, eventArgument) {    
  8.     if (!theForm.onsubmit || (theForm.onsubmit() != false)) {    
  9.         theForm.__EVENTTARGET.value = eventTarget;    
  10.         theForm.__EVENTARGUMENT.value = eventArgument;    
  11.         theForm.submit();    
  12.     }    
  13. }    
  14. // -->    
  15. < /script>    
  16.    < input language="javascript" onclick="__doPostBack('delete','')" name="delete" type="button" id="delete" value="Server button" />    
  17.  
  18. < input type="button" onclick="return DeleteCheck(this)" id="Button1" value="Client button" />    
  19.     < input name="Button2" type="submit" id="Button2" onclick="return DeleteCheck(this)" value="Server submit" />    
  20.     < input type="submit" onclick="return DeleteCheck(this)" id="Button3" value="Client submit" />    
  21.      < button id="button4" onclick="return DeleteCheck(this)" value="Button-Button">Button-Button< /button>    
  22.      < input type="submit" name="button5" value="Asp:button" onclick="return DeleteCheck(this);" id="button5" />    
  23.      < a id="LinkButton1" href="javascript:__doPostBack('LinkButton1','')">LinkButton< /a>    


asp.net控件總結(jié)二

這里也可以看出幾點(diǎn):
 
1、當(dāng)html服務(wù)器控件在服務(wù)器端添加了服務(wù)器事件后生成的代碼變?yōu)?onclick="_doPostBack()",實(shí)際上是調(diào)用腳本把整個(gè)窗體提交到服務(wù)器(如果沒有添件服務(wù)器事件,而只是添加了runat="server"是不會(huì)發(fā)送到服務(wù)器端的)這里注意如果要在html服務(wù)器控件中添加一個(gè)客戶端事件如上面的 

  1. < input runat="server" type="button" id="delete" value="Server button" onserverclick="delete_ServerClick" />    

變成

  1. < input runat="server" type="button" id="delete" value="Server button" onclick="return DeleteCheck(this)" onserverclick="delete_ServerClick" />    

那樣生成的html代碼變成   

  1. < input language="javascript" onclick="return DeleteCheck(this)  __doPostBack('delete','')" name="delete" type="button" id="delete" value="Server button" />    

提示有腳本錯(cuò)誤原因是onclick事件執(zhí)行了2個(gè)腳本且書寫的格式不正確。  
onclick="return DeleteCheck(this);_doPostBack()" 

這樣的話就只能執(zhí)行第一個(gè)函數(shù)而第二個(gè)函數(shù)就不能執(zhí)行了(return).如果用 
onclick="return DeleteCheck(this),_doPostback()" 
是指2個(gè)函數(shù)同時(shí)都要執(zhí)行沒有影響(相當(dāng)于一條語句)。

2、控件的名字沒有發(fā)生變化,這個(gè)問題我也不太明白為什么不發(fā)生變化,請(qǐng)高手門指教哈

3、asp:button中的onclientclick事件生成后就變成了onclick事件了,類型變成了type="submit".然而服務(wù)器事件的onclick我想是通過發(fā)送到服務(wù)器端執(zhí)行的(具體我也不太很清楚)。

4、LinkButton不定義onclick事件,它會(huì)自動(dòng)的生成下面代碼發(fā)送到服務(wù)器端。
href="javascript:__doPostBack('LinkButton1',' ')" 

【編輯推薦】

  1. ASP.NET下拉框呈現(xiàn)不同顏色的實(shí)現(xiàn)
  2. Asp.Net函數(shù)集和方法集
  3. ASP.NET編程規(guī)范之界面設(shè)計(jì)標(biāo)準(zhǔn)淺析
  4. ASP.NET編程模型之頁面生命周期十一步詳解
  5. ASP.NET編程模型之HTTP協(xié)議淺析 
     
責(zé)任編輯:周立方 來源: 網(wǎng)絡(luò)轉(zhuǎn)載
相關(guān)推薦

2009-08-04 13:10:05

ASP.NET服務(wù)器控

2009-08-05 17:11:51

ASP.NET控件開發(fā)ASP.NET服務(wù)器控

2009-07-30 16:52:38

復(fù)合控件ASP.NET服務(wù)器控

2009-08-10 14:08:15

ASP.NET服務(wù)器控ASP.NET組件設(shè)計(jì)

2009-08-06 14:16:04

ASP.NET服務(wù)器控

2009-07-30 12:42:19

html控件和web控

2009-08-25 15:18:58

ASP.NET數(shù)據(jù)We

2009-08-04 17:18:37

2011-07-12 15:17:02

ASP.net服務(wù)器控件

2009-08-03 18:00:00

ASP.NET服務(wù)器控

2009-08-06 14:42:54

ASP.NET服務(wù)器控

2011-07-12 15:03:28

2009-08-07 13:56:46

ASP.NET控件開發(fā)

2009-08-10 14:25:33

ASP.NET服務(wù)器控

2009-07-27 12:56:27

控件CheckBoxLASP.NET服務(wù)器

2009-08-04 13:39:43

ASP.NET 2.0

2009-08-04 15:13:38

2009-07-28 09:46:53

ASP.NET服務(wù)器控

2009-08-07 17:41:07

ASP.NET Web

2009-07-28 16:21:03

Asp.net AjaAutoComplet
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)