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

OnClick是服务器端事件处理方法,在服务器端也就是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;" />

下面以 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,然后

到服务器端执行服务器的相关代码。

<%@ Page Language="C#"AutoEventWireup="true"CodeBehind="WebForm2.aspx.cs"Inherits="CaiPiao.WebForm2"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
    <title></title>
    <scripttype="text/javascript">
        function fnIsSearch() {
            return true;
        }
    </script>
</head>

<body>
    <formid="form1" runat="server">
    <div>
    <inputid="btnImport"type="submit"runat="server"value="导出" onserverclick="btnImport_Click"/>
    </div>
    </form>
</body>
</html>

后台代码
[code=C#]
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace CaiPiao
{
    public partial class WebForm2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            this.btnImport.Attributes.Add("onclick", "return fnIsSearch();");
        }
        public void btnImport_Click(object sender, EventArgs e)
        {
            Response.Write("测试");
        }
    }
}

转自:http://blog.csdn.net/coolpig86/article/details/5439560

OnClick,OnClientClick和OnServerClick的区别的更多相关文章

  1. onclick事件与onserverclick事件

    1.这里仅对web控件而言,onclick事件执行的是客户端中的代码, <%@ Page Language="C#" AutoEventWireup="true&q ...

  2. 超链接a标签的href与onclick中使用javascript的区别

    onclick中javascript的区别一般没用到都没注意,但出错时才有些郁闷,看文本章解释如下: 以前一直很随意,后来看.net里的linkbutton似乎是用在<a href=" ...

  3. href="javascript:xxx(this);"和onclick="javascript:xxx(this);"的区别

    href="javascript:xxx(this);"和onclick="javascript:xxx(this);" 一直以为这两种写法是等同的,今天在项目 ...

  4. a标签的onclick和href事件的区别

    在执行顺序上href是低于onclick的,那么这个会造成什么影响呢 <div onclick="a()"> <a href="#" oncl ...

  5. onchange、onclick、onblur等事件区别

    onblur:控件在失去焦点的时候触发 OnChange:当控件的内容发生改变时触发该事件 OnClick:点击该控件时触发 OnKeyDown:在控件有焦点的情况下,按下键时发生 OnKeyUp:在 ...

  6. asp.net中<input type=button>无法调用后台函数

    例如:用<input id="bt1" type="button" runat="server" Onclick="btnL ...

  7. HTML 控件和web控件 OnClientClick和OnClick OnServerClick区别

      ^_^ 本来对html控件,服务器控件的知识模模糊糊的.今天特地查了相关的知识. 下面是我写代码总结的. 这些事件   主要用于在客户端执行验证,然后决定是否执行服务端事件   (没接触之前就为此 ...

  8. onClick,onServerClick,onClientClick

    <asp:button id=button1 runat=server test=button1 onclick=button1_onclick/> <input type=butt ...

  9. Html A标签中 href 和 onclick用法、区别、优先级别

    原文:Html A标签中 href 和 onclick用法.区别.优先级别 如果不设置 href属性在IE6下面会不响应hover.双击后会选中标签的父容器而非这个一a标签(IE下都存在这一问题). ...

随机推荐

  1. 剑指offer题目记录

    1.如下为类型CMyString的声明,请为该类型添加赋值运算符函数. class CMyString { public: CMyString(char* pData = NULL); CMyStri ...

  2. zabbix中文乱码的问题

    在使用zabbix时,有时候会出现中文乱码的问题,如下: 因为zabbix自身对中文简体的支持不完善,需要我们手动的去上传新的字体进行替换: 1.在windows获取字体库文件 在Windows上的字 ...

  3. SQL Fundamentals || DCL(Data Control Language) || 系统权限&对象权限管理(GRANT&REVOKE)

    SQL Fundamentals || Oracle SQL语言 语句 解释 Create user Creates a user(usually performed by a DBA) Grant ...

  4. HDFS Snapshots

    Overview HDFS Snapshots are read-only point-in-time copies of the file system. Snapshots can be take ...

  5. https://pyobjc.readthedocs.io/en/latest/

    https://pyobjc.readthedocs.io/en/latest/ The PyObjC project aims to provide a bridge between the Pyt ...

  6. The History of Operating Systems

    COMPPUTER SCIENCE AN OVERVIEW 11th Edition job 作业 batch processing 批处理 queue 队列 job queue 作业队列 first ...

  7. Python面试网络编程和并发

    1.简述 OSI 七层协议. OSI 开放系统互联参考模型,它是理论的,参考模型 七层:物理层->数据链路层->网络层->传输层->会话层->表示层->应用层 2. ...

  8. ZB api

    本文介绍ZB api Rest API (已开启) ZB为用户提供了一个简单的而又强大的API,旨在帮助用户快速高效的将ZB交易功能整合到自己应用当中. 如果在使用过程中有任何问题,请加群764113 ...

  9. bokeyuan_python文章爬去入mongodb读取--LOWBIPROGRAMMER

    # -*- coding: utf-8 -*- import requests,os from lxml import etree from pymongo import * class Boke(o ...

  10. IO流(3)删除文件或文件夹

    删除功能:public boolean delete() * * 注意: * A:如果你创建文件或者文件夹忘了写盘符路径,那么,默认在项目路径下. * B:Java中的删除不走回收站. * C:要删除 ...