OnClick,OnClientClick和OnServerClick的区别
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" οnclick="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
轉載于:https://www.cnblogs.com/ITGirl00/p/3325342.html
總結
以上是生活随笔為你收集整理的OnClick,OnClientClick和OnServerClick的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FreeMarker教程
- 下一篇: 最长子段和 11061008 谢子鸣