1. 程式人生 > >input type="button"和asp:Button的區別

input type="button"和asp:Button的區別

ASP.NET控制元件<ASP:Button /> html控制元件< input type=“button”>

前一種叫 Html 客戶端控制元件 後一種叫 Web 伺服器控制元件

(伺服器控制元件實際上就是客戶端控制元件在客戶端的對映而已)

< input type=“button” id="" value="" OnServerClick="" runat=“server” > 你不用.net用Java,php,asp都可以。因為它是HTML < asp:Button ID="" Text="" runat=“server” OnClick="" />

只有安裝.netFrameWork的伺服器才能解析的來,因為它是asp.net伺服器控制元件。

服務端控制元件在伺服器解析後,HTML程式碼是和客戶端控制元件是一樣的 服務端控制元件有很多的功能,但耗用資源,客戶端控制元件反

HTML 伺服器控制元件 對伺服器公開的 HTML 元素,可對其進行程式設計。HTML 伺服器控制元件公開一個物件模型,該模型十分緊密地對映到相應控制元件所呈現的 HTML 元素。

Web 伺服器控制元件 這些控制元件比 HTML 伺服器控制元件具有更多內建功能。Web 伺服器控制元件不僅包括窗體控制元件(例如按鈕和文字框),而且還包括特殊用途的控制元件(例如日曆、選單和樹檢視控制元件)。Web 伺服器控制元件與 HTML 伺服器控制元件相比更為抽象,因為其物件模型不一定反映 HTML 語法。

…………………………………………………………………………………………(可省↓) 伺服器只認識input,我們可以直接寫input

但是asp是要把自己自動翻譯成input再交給伺服器的。其實是一樣的東西

            asp控制元件,直接可以用c#程式設計
            input加上 runat=“server” 也被c#程式設計了

HTML控制元件是為了相容性考慮的,如果你直接用ASP.NET獨有的控制元件,這個網頁就不能再其他程式中正常編輯,比如Dreamweaver,這樣不方便網頁設計師和程式開發人員的分工協作。還有一些Javascript對ASP.NET控制元件的相容性也不太好;

另外ASP.net控制元件或多或少會消耗一些伺服器資源,這些控制元件最終會經過伺服器的轉換成為HTML控制元件,這一轉換是要消耗資源的,但是這種消耗微乎其微。 比如< ASP:Textbox>對應< input type="text>, < ASP:button>對應< input type=“button”>或者<input type="submit>, < ASP:Label>對應< span>

所以一般情況下能用ASP.NET控制元件的儘量用ASP.NET控制元件,它的功能遠比HTML控制元件強大。另外上傳檔案也可以用ASP.NET控制元件。

Dreamweaver是做設計用的,不是搞程式設計,而且他不只為ASP.NET服務,其他伺服器端程式設計技術比如PHP,JSP都是以HTML控制元件為基礎,不像ASP.NET設計了一套獨有的控制元件。

還有“一個在伺服器執行、一個在客戶端執行”你這個理解是錯誤的,即使是HTML控制元件加上runat="server"也一樣是在伺服器端執行。

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 IIl直接雙擊瀏覽器執行,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"時,回送功能才能開啟

  1. 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,你好!’);” >

在不需要與後臺進行互動時就使用HTML控制元件,它的佔用的資源比較少,速度也比較快,在需要與後臺進行互動時,就使用WEB控制元件,或者在HTML 控制元件上加上runat=“server” 也可以將一個HTML控制元件轉換成互動控制元件,但這樣佔用的資源就和Web控制元件沒任何分別了。 WEB控制元件可以響應伺服器端事件,可以在後臺程式碼中設定相關屬性和方法等!HTML不可, WEB伺服器控制元件需要通過伺服器處理後譯為HTML控制元件再發送給瀏覽器,所以比較耗費伺服器資源,並由於有IEWSTATE,所以在回送的時候會保持控制元件狀態(也可以設定不儲存)也因此增加了回送資訊量。HTML直接傳送到瀏覽器,不另耗費伺服器資源,但無狀態儲存! 獲得HTML控制元件的值 需要使用REQUEST的FORM 方法,WEB控制元件就可以直接通過屬性直接處理! 所以,一般來說,對於不需要儲存控制元件狀態,並無什麼對值處理的地方就可以使用HTML 如果需要對控制元件進行動態的處理,或要儲存其狀態等 就可以WEB伺服器控制元件!WEB伺服器控制元件用起來個人認為要方便些,但是就是另外多耗費伺服器資源! 很多書上都說,考慮效能的話在能不用WEB伺服器控制元件的地方就儘量不用。 什麼時候用什麼時候不用還是要看具體情況,在條件寬鬆的情況下就看個人習慣了