Asp.Net中OnClientClick与OnClick 的区别
OnClientClick:OnClientClick是客户端事件方法,一般采用JavaScript来进行处理,也就是直接在IE端运行,一点击就运行。
OnClick:OnClick是服务器端事件处理方法,在服务器端,也就是IIS中运行.点击按钮后,执行postback,再运行。
如果在一个按钮上我们同时有客户端的OnClientClick方法又有OnClick事件处理方法,如何才能按照正常的逻辑运行呢?
OnClientClick中我们常用来做一些客户端的检测,当然放在服务器也可以做同样的检测,但这样做的代价是与服务器进行交互,消耗资源,而且用户体验不好...
例:
//jsDel()为一javascript函数
<asp:Button ID="btnDel" Width="80px" CssClass="buttonstyle" runat="server" Text="删除" OnClientClick="return jsDel();" OnClick="btnDel_Click" />
需要注意的是:当我们当击这个按钮时,自动先执行的客户端,再执行服务器端,如果客户端返回false,那么服务器端对应的方法不执行,这样就达到检测的效果,只有通过客户端检测,才会去执行服务器端的方法。
也就是说如果我们上面写成:
<asp:Button ID="btnDel" Width="80px" CssClass="buttonstyle" runat="server" Text="删除" OnClientClick="jsDel(); return false;" OnClick="btnDel_Click" />
那么不管jsDel执行的结要如何,服务器端对应的btnDel_Click方法都永远不会执行,因为return false就使客户端的检测永远都返回false,服务端将没有机会执行。
如果我们写成:
<asp:Button ID="btnDel" Width="80px" CssClass="buttonstyle" runat="server" Text="删除" OnClientClick="jsDel();"OnClick="btnDel_Click" />
那么btnDel_Click都有会发生。因为客户端检测没有返回结果,同样也就达不到检测的效果,也就是说没有通过检测也去执行服务器的方法了。
所以必须注意:
OnClientClick是用来检测数据,返回值告诉我们是否需要继续执行OnClick,如果OnClientClick的返回值为true则执行OnClick,否则不执行;
当然也可以通过btn.Attribute.add()的方法来进行类似的处理。
posted on 2014-08-05 18:50 lijie20111015 阅读(191) 评论(0) 收藏 举报
浙公网安备 33010602011771号