OnClientClick和OnClick的区别

来源:互联网 发布:tomcat源码有必要 编辑:程序博客网 时间:2024/05/17 20:10
       最近发现两个特别相近的客户端事件,OnClientClick和OnClick,都是点击事件,又有什么区别呢?
首先我们要了解这两个事件:

       OnClientClick是客户端事件方法.一般采用JavaScript来进行处理.也就是直接在IE端运行.一点击就运行.


       OnClick事件是服务器端事件处理方法,在服务器端,也就是IIS中运行.点击按钮后,执行postback,再运行.


       如果一个按钮上我们同时有客户端的OnClientClick方法又有OnClick事件处理方法,如何才能按照正常的逻辑运行呢.


      OnClientClick中我们常用来做一些客户端的检测.当然放在服务器也可以做同样的检测,但这样做的代价是与服务器进行交互,消耗资源,而且用户体验不好...

      比如说:Button有:OnClick事件和OnClientClick属性,前者一般就是服务端的点击事件!后者则是客户端的点击事件!

     我们来做一个测试!在Default.aspx页面中添加如下代码!

<strong><span style="font-size:18px;">  <script language="javascript" type="text/javascript">           function buttonClick() {               alert("我是客户端点击事件");               return false;               }  </script></span></strong>


<form id="form1" runat="server">    <div>        <asp:Button ID="Button1" runat="server" Text="些Button是服务端控件,默认使用OnClientClick事件,请禁用浏览器的Js功能体验"            OnClick="Button1_Click" OnClientClick="return buttonClick();" />        <asp:Label ID="Label1" runat="server" Text=""></asp:Label>    </div></form>
cs类代码:
protected void Button1_Click(object sender, EventArgs e){    this.Label1.Text = "我是服务端点击事件";}
     

     大家运行看看是什么效果?  你可能会发现,只弹出了JS中的代码! 没错,这正是我们想要的效果,通过return false 来"屏蔽"服务端的校验!好处是什么? 就是不用刷新页面呀!

     你再把浏览器的脚本功能禁用了,你再试一试,看看又是什么效果?

     通过又重校验就能确保用户的非法录入,这正是我们想要的结果!

2 0