OnClientClick和OnClick
OnClientClick是客户端事件处理方法,一般采用JavaScript来进行处理,也就是直接在IE端运行,一点击就运行
OnClick是服务器端事件处理函数,使用C#或者vb.net,在服务器端,也就是IIS中运行,点击按钮后,执行postback,之后再运行。
OnClientClick常用来做一些客户端的检测。当然也可以放在服务器端检测,但是需要与服务器进行交互,消耗资源,而且用户体验也不好。
当一个控件上同时有OnClick和OnClientClick时,OnClientClick先于OnClick执行
正确的写法应该是:
<asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" OnClientClick="return saveFunc();" />
saveFunc对数据进行验证,当验证通过返回true时,执行服务器端方法进行保存,验证不通过返回false,服务器端的保存方法就不会执行。
错误的写法:
<!--无论验证是否通过,都会执行服务器端方法,不能达到验证的目的-->
<asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" OnClientClick="saveFunc();" /> <!--无论验证结果如何都返回false,服务器端方法永远不会执行-->
<asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" OnClientClick="saveFunc(); return false;" />
OnClientClick是客户端脚本,一般使用javascript,在客户端,也就是IE中运行,点击后马上执行
OnClick是服务器端事件处理函数,使用C#或者vb.net,在服务器端,也就是IIS中运行,点击按钮后,执行postback,之后再运行。
其实有的时候需要客户端和服务端双重校验,为什么这么说呢? 比果说,一个用户名的文本框,在客户端我们通过JS校验,只能输入字母和数字,不能有特殊字符!通常情况下是没有问题的,但是总有那么一丢丢人想方设法的去“搞破坏” ,这个时候就需要进行双重校验了!说白了,就是服务端和客户端都进么校验!
比如说:Button有:OnClick事件和OnClientClick属性,前者一般就是服务端的点击事件!后者则是客户端的点击事件!
我们来做一个测试!在Default.aspx页面中添加如下代码!
<script language="javascript" type="text/javascript">
function buttonClick() {
alert("我是客户端点击事件");
return false;
} </script>
页面代码:
<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 来"屏蔽"服务端的校验!好处是什么? 就是不用刷新页面呀!
你再把浏览器的脚本功能禁用了,你再试一试,看看又是什么效果?
呵呵,通过又重校验就能确保用户的非法录入,这正是我们想要的结果!
OnClientClick和OnClick的更多相关文章
- 【转】ASP.NET的OnClientClick与OnClick事件【解决了“识别用户在对话框里面选yes或no的问题”】
OnClientClick是客户端事件方法.一般采用JavaScript来进行处理.也就是直接在IE端运行.一点击就运行. OnClick事件是服务器端事件处理方法,在服务器端,也就是IIS中运行.点 ...
- JS、OnClientClick、OnClick
OnClientClick是客户端事件处理方法,一般采用JavaScript来进行处理,也就是直接在浏览器端运行,一点击就运行: OnClick是服务器端事件处理方法,在服务器端也就是IIS中运行,点 ...
- HTML 控件和web控件 OnClientClick和OnClick OnServerClick区别
^_^ 本来对html控件,服务器控件的知识模模糊糊的.今天特地查了相关的知识. 下面是我写代码总结的. 这些事件 主要用于在客户端执行验证,然后决定是否执行服务端事件 (没接触之前就为此 ...
- Asp.Net 之 OnClientClick 与 OnClick 的执行顺序
Asp.net 中 OnClientClick 与 OnClick 的执行顺序为:客户端的OnClientClick先执行,服务器端的OnClick后执行. 拓展:在执行完客户端的OnClientCl ...
- Asp.net 中 OnClientClick 与 OnClick 的区别
OnClientClick 是客户端事件处理方法,一般采用JavaScript来进行处理,也就是直接在IE端运行,一点击就运行. OnClick 是服务器端事件处理方法,在服务器端也就是IIS中运行, ...
- onclientclick与onclick的问题.
<script language="javascript" type="text/javascript"> document.getElementB ...
- ASP.NET的OnClientClick与OnClick事件
OnClientClick是客户端事件方法.一般采用JavaScript来进行处理.也就是直接在IE端运行.一点击就运行. OnClick事件是服务器端事件处理方法,在服务器端,也就是IIS中运行.点 ...
- onclientclick和onclick区别
OnClientClick是客户端脚本,一般使用javascript,在客户端,也就是IE中运行,点击后马上执行OnClick是服务器端事件处理函数,使用C#或者vb.net,在服务器端,也就是IIS ...
- OnClientClick和OnClick同时使用!
摘自:http://www.cnblogs.com/zhuiyi/archive/2011/07/04/2097804.html 其实有的时候需要客户端和服务端双重校验,为什么这么说呢? 比果说,一个 ...
随机推荐
- gdb图形化调试工具总结
gdb除了命令行方式等的调试之外,还有图形化的调试工具,下面列举一些供参考 1:insight 2: ddd 3: kgdb 4: xxgdb 其它的工具欢迎补充
- ceph之Placement Group
预定义PG_NUM 新建一个存储池命令:ceph osd pool set {pool-name} pg_num 选择一个pg_num的值是强制性的,这是因为该值不能被自动计算出来,以下是一些常用值 ...
- javascript 学习随笔2
<html> <head> <script type="text/javascript"> function writeText(txt) { ...
- android: 长按删除listview的item
转自:http://www.cnblogs.com/nuistlr/archive/2012/09/07/2675649.html 首先要继承OnItemLongClickListener publi ...
- vim 小技巧总结
1.v+移动光标可以选中文本. 2.y可以复制已经选中的文本 3.p可以粘贴 复制一行则:yy 复制当前光标所在的位置到行尾:y$ 复制当前光标所在的位置到行首:y^ 复制三行则:3yy,即从当前光标 ...
- 【集训笔记】动态规划背包问题【HDOJ1421【HDOJ1058【HDOJ2546
http://acm.hdu.edu.cn/showproblem.php?pid=2546 http://acm.zju.edu.cn/onlinejudge/showContestProblem. ...
- android蓝牙的调试(博通蓝牙工作 and 低功耗模式)
首先结合项目从整体上去把握这部分: 蓝牙模块中一个比较核心的文件是bluetooth.c, 在我们上电的时候, 会调用这个文件中bt_enable()这个函数, 在这个函数里面先调用set_bluet ...
- swift 关于 toolbar 学习笔记
import UIKit class ViewController: UIViewController { @IBOutlet weak var toolBar: UIToolbar! @IBOutl ...
- Linux命令: chown
touch auth.log root@ubuntu:/work# ls -l auth.log -rw-r--r-- 1 root root 0 Feb 18 19:27 auth.log chow ...
- 【转】Lua编程规范
Lua编程规范 1. 版本和版权问题 版权和版本的声明位于定义文件的开头(参见示例1-1),主要内容有: (1)版本号 <主版本号><次版本号><修订号> (2)文 ...