程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> ASP.NET基礎 >> Asp.Net 不同的OnClick事件區別小結(onserverclick,onclientclick)

Asp.Net 不同的OnClick事件區別小結(onserverclick,onclientclick)

編輯:ASP.NET基礎
1. HTML控件,如IMG的輸入按鈕等 的 onclick ( 客戶端 )和 onserverclick( 服務端 )事件,注意 runat="server"。。。

此處的onclick先於onserverclick執行。
2.WEB控件,如<asp:button 按鈕等 的 onclientclick( 客戶端 ) 和 onclick ( 服務端 )事件。。。

 

此處的onclientclick先於onclick執行。
onclientclick  事件來自2.0, 它用來取代下列代碼。。。

 

總之,客戶端點擊事件先於服務器端點擊事件執行。也就是說,先執行客戶端的Javascript,然後到服務器端執行服務器的相關代碼。

附:html控件、html服務器控件和web用戶控件
asp.net之所以現在開發方便和快捷,關鍵是它有一組強大的控件庫,包括web服務器控件,web用戶控件,web自定義控件,html服務器控件和html控件等。這裡主要說說html控件、html服務器控件和web服務器控件的區別。
1、html控件:就是我們通常的說的html語言標記,這些語言標記在已往的靜態頁面和其他網頁裡存在,不能在服務器端控制的,只能在客戶端通過javascript和vbscript等程序語言來控制。<input type="button" id="btn" value="button"/>
2、html服務器控件:其實就是html控件的基礎上加上runat="server"所構成的控件.它們的注意區別是運行方式不同,html控件運行在客戶端,而html服務器控件是運行在服務器端的。參考其他資料是這樣說的: 當ASP.NET 網頁執行時,會檢查標注有無runat 屬性,如果標注沒有設定,那麼Html標注就會被視為字符串,並被送到字符串流等待送到客戶端,客戶端的浏覽器會對其進行解釋;如果Html標注有設定runat="server" 屬性,Page 對象會將該控件放入控制器,服務器端的代碼就能對其進行控制,等到控制執行完畢後再將Html服務器控件的執行結果轉換成Html標注,然後當成字符串流發送到客戶端進行解釋<input id="Button" type="button" value="button" runat="server" />
3、web服務器控件:也稱asp.net服務器控件,是Web Form編程的基本元素,也是asp.net所特有的。它會按照client的情況產生一個或者多個html控件,而不是直接描述html元素。如: <asp:Button ID="Button2" runat="server" Text="Button"/>那麼它和html服務器控件有什麼區別呢?參照其他網頁的資料看法如下:
1)、Asp.net服務器控件提供更加統一的編程接口,如每個Asp.net服務器控件都有Text屬性。
2)、隱藏客戶端的不同,這樣程序員可以把更多的精力放在業務上,而不用去考慮客戶端的浏覽器是ie還是firefox,或者是移動設備。
3)、Asp.net服務器控件可以保存狀態到ViewState裡,這樣頁面在從客戶端回傳到服務器端或者從服務器端下載到客戶端的過程中都可以保存。
4)、事件處理模型不同,Html標注和Html服務器控件的事件處理都是在客戶端的頁面上,而Asp.net服務器控件則是在服務器上,舉例來說:
<input id="Button4" type="button" value="button" runat="server"/>是Html服務器控件,此時我們點擊此按鈕,頁面不會回傳到服務器端,原因是我們沒有為其定義鼠標點擊事件。
<input id="Button4" type="button" value="button" runat="server" onserverclick="test" />我們為Html服務器控件添加了一個onserverclick事件,點擊此按鈕頁面會發回服務器端,並執行test(object sender, EventArgs e)方法。
<asp:Button ID="Button2" runat="server" Text="Button" />是Asp.net服務器控件,並且我們沒有為其定義click,但是我們點擊時,頁面也會發回到服務器端。
由此可見:Html標注和Html服務器控件的事件是由頁面來觸發的,而Asp.net服務器控件則是由頁面把Form發回到服務器端,由服務器來處理。

onclick,onclientclick和onserverclick的區別

下面以 HTML的按鈕( system.web.ui.htmlcontrols ) 和 ASP.NET服務端按鈕 (

system.web.ui.webcontrols ) 為例:
1. HTML控件,如IMG的輸入按鈕等 的 onclick ( 客戶端 )和 onserverclick( 服務端 )事件,

注意 runat="server"。。。
<input type="button" id="btn" name="btn" value="button" runat="server" onserverclick="ServerSideEvent" onclick="SideScript" />

此處的onclick先於onserverclick執行。
2.WEB控件,如<asp:button 按鈕等 的 onclientclick( 客戶端 ) 和 onclick ( 服務端 )事件。。。

<asp:Button ID="btn" text="button" runat="server" OnClick="SideScript" OnClientClick="ClientSideScript" />

此處的onclientclick先於onclick執行。
onclientclick 事件來自2.0, 它用來取代下列代碼。。。

btn.Attributes.Add("onclick","SideScript");

總之,客戶端點擊事件先於服務器端點擊事件執行。也就是說,先執行客戶端的Javascript,然後

到服務器端執行服務器的相關代碼。

ASP.NET中Onclick和OnserverClick事件的區別

對於服務器按鈕控件(即<asp:Button>類型的按鈕):
服務器響應事件:OnClick
客戶端響應屬性:OnClientClick

對於html按鈕控件(即<input type="button" runat="server">)
服務器響應事件:OnServerClick
客戶端響應事件:onclick
asp:Button類型的是onclick
<input type="button" runat="server" />類型的是onserverclick
一個是.net的控件 ~一個是html控件轉換成服務器端控件
效果完全一樣,應為input 本身具有onclick的客戶端事件,微軟只能使用onserverclick作為服務器端響應的名稱

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved