下面以HTML
的按钮( system.web.ui.htmlcontrols
) 和 ASP.NET
服务端按钮 ( system.web.ui.webcontrols
) 为例
-
HTML
控件,如IMG
的输入按钮等 的onclick
( 客户端 )和onserverclick
( 服务端 )事件,注意runat="server"。。。
此处的onclick
先于onserverclick
执行。 -
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
发回到服务器端,由服务器来处理。
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
作为服务器端响应的名称