在C#中如果是asp控件的button有两个click的调用,一个是OnClick,一个是OnClientClick。那么这两者有什么区别呢,下面就来说说区别。
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Page_Load" OnClientClick="one()" />
首先你会看到这个button前面有asp:,表示是一个asp控件。
runat="server",这是表示这个控件能请求服务端,也就是后端,如果加了这句,那么后端就能直接通过ID来操作这个控件,如:赋值;后端代码就可以写成this.Button1.Text = "";
说会正题 onClick是执行服务器端的操作,而onClientClick是执行前端的方法操作,那么谁先执行呢,onClientClick先执行,若onClientClick中的方法返回true才会执行onClick中的后端方法。
如果让这两个方法同时起作用,则要注意OnClientClick=“return 方法名称(); 若不加return,那么不管OnClientClick的返回结构是true或false,OnClick事件都会执行。
前端代码:
所有服务器控件必须出现在 <form> 标签内,同时 <form> 标签必须包含 runat="server" 属性。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="WebApplication2.index" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> <form id="form1" runat="server"> <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Page_Load" OnClientClick="return one()" /> </form> </body> </html> <script type="text/javascript"> function one() { document.getElementById("Button1").innerText = "你好"; return false; } </script>
后端:
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApplication2 { public partial class index : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Button1.Text = "www"; } } }