日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Asp.net控件之異同:HTML控件與Web服務(wù)器控件

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

黎川ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

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ù)器控件:其實就是html控件的基礎(chǔ)上加上runat="server"所構(gòu)成的控件.它們的注意區(qū)別是運行方式不同,html控件運行在客戶端,而html服務(wù)器控件是運行在服務(wù)器端的。參考其他資料是這樣說的:       當(dāng)ASP.NET 網(wǎng)頁執(zhí)行時,會檢查標(biāo)注有無runat 屬性,如果標(biāo)注沒有設(shè)定,那么Html標(biāo)注就會被視為字符串,并被送到字符串流等待送到客戶端,客戶端的瀏覽器會對其進(jìn)行解釋;如果Html標(biāo)注有設(shè)定runat="server" 屬性,Page 對象會將該控件放入控制器,服務(wù)器端的代碼就能對其進(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所特有的。它會按照client的情況產(chǎn)生一個或者多個html控件,而不是直接描述html元素。如: 

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

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

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

2、 隱藏客戶端的不同,這樣程序員可以把更多的精力放在業(yè)務(wù)上,而不用去考慮客戶端的瀏覽器是ie還是firefox,或者是移動設(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ù)器控件,此時我們點擊此按鈕,頁面不會回傳到服務(wù)器端,原因是我們沒有為其定義鼠標(biāo)點擊事件。

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

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

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

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

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

 這段代碼是我放在repeat中的模板里的:其中DeleteCheck是一個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é)

可以看出以下幾點:

1、當(dāng)控件屬性中有runat="server"時,生成的html控件時name和id發(fā)生的變化(.net Framework)。
2、當(dāng)asp:button服務(wù)器按鈕通過生成的頁面后轉(zhuǎn)化成類型為submit類型的Client控件。
3、當(dāng)控件是html控件時通過生成的頁面和原來的html代碼完全一樣(理由上面已經(jīng)說名)。
 
另外我還測試了把這段代碼直接放到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é)二

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

 
 
 
  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" />    

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

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

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

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

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

【編輯推薦】

  1. ASP.NET下拉框呈現(xiàn)不同顏色的實現(xiàn)
  2. Asp.Net函數(shù)集和方法集
  3. ASP.NET編程規(guī)范之界面設(shè)計標(biāo)準(zhǔn)淺析
  4. ASP.NET編程模型之頁面生命周期十一步詳解
  5. ASP.NET編程模型之HTTP協(xié)議淺析 
     

網(wǎng)頁標(biāo)題:Asp.net控件之異同:HTML控件與Web服務(wù)器控件
本文網(wǎng)址:http://m.5511xx.com/article/dhcicec.html