在ASP.NET中防止页面多次提交的代码实现

开发 后端
本文介绍在ASP.NET中防止页面多次提交的代码实现。

此处提供的代码用来实现当asp.net页面中的某个Button被点击后disable掉该页面中所有的Button,从而防止提交延时导致的多次提交。基于之前的onceclickbutton脚本.

  1. //ASP.NET中防止页面多次提交的代码:javascript  
  2. < script language="javascript"> 
  3.    < !--  
  4.      
  5.    function disableOtherSubmit()  
  6.    { var obj = event.srcElement;  
  7.    var objs = document.getElementsByTagName('INPUT');  
  8.    for(var i=0; i< objs.length; i++)  
  9.    {  
  10.    if(objs[i].type.toLowerCase() == 'submit')  
  11.    {  
  12.    objs[i].disabled = true;  
  13.    }  
  14.    } }  
  15.      
  16.    //--> 
  17.    < /script>  
  1. //ASP.NET中防止页面多次提交的代码:asp.net
  2. public class PreventMultiClick : System.Web.UI.Page    
  3.    {    
  4.    protected System.Web.UI.WebControls.Button Button1;    
  5.    protected System.Web.UI.WebControls.Button Button2;    
  6.    protected System.Web.UI.WebControls.LinkButton LinkButton1;    
  7.    protected System.Web.UI.WebControls.Button Button3;    
  8.        
  9.    private void Page_Load(object sender, System.EventArgs e)    
  10.    {    
  11.    this.GetPostBackEventReference(this.Button3); //保证 __doPostBack(eventTarget, eventArgument) 正确注册    
  12.    if(!IsPostBack)    
  13.    {    
  14.    System.Text.StringBuilder sb = new System.Text.StringBuilder();    
  15.    sb.Append("if (typeof(Page_ClientValidate) == 'function') { if (Page_ClientValidate() == false) { return false; }}"); //保证验证函数的执行    
  16.    sb.Append("if(window.confirm('are you sure?')==false) return false;"); //自定义客户端脚本    
  17.    sb.Append("disableOtherSubmit();"); // disable所有submit按钮    
  18.    sb.Append(this.GetPostBackEventReference(this.Button3)); //用__doPostBack来提交,保证按钮的服务器端click事件执行    
  19.    sb.Append(";");    
  20.    Button3.Attributes.Add("onclick",sb.ToString());    
  21.    }    
  22.    }    
  23.    #region Web Form Designer generated code    
  24.    override protected void OnInit(EventArgs e)    
  25.    {    
  26.    //    
  27.    // CODEGEN: This call is required by the ASP.NET Web Form Designer.    
  28.    //    
  29.    InitializeComponent();    
  30.    base.OnInit(e);    
  31.    }    
  32.        
  33.    /// < summary>   
  34.    /// Required method for Designer support - do not modify    
  35.    /// the contents of this method with the code editor.    
  36.    /// < /summary>   
  37.    private void InitializeComponent()    
  38.    {     
  39.    this.Button3.Click += new System.EventHandler(this.Button3_Click);    
  40.    this.Load += new System.EventHandler(this.Page_Load);    
  41.    }    
  42.    #endregion    
  43.    private void Button3_Click(object sender, System.EventArgs e)    
  44.    {    
  45.    System.Threading.Thread.Sleep(3000);    
  46.    Response.Write("Hello world!");    
  47.    }    
  48.    }   

此处只是disable掉所有的submit button, 我觉得其它的可提交控件也是可以通过类似的方法来disable的.

以上就是ASP.NET中防止页面多次提交的代码实现。

【编辑推荐】

  1. ASP.NET服务器控件开发之复合控件
  2. ASP.NET中的“三层结构”简介
  3. ASP.NET中优化性能方法26则
  4. 比较ASP.NET中的html控件和web控件
  5. ASP.NET中的对象描述
责任编辑:yangsai 来源: 网络
相关推荐

2009-05-31 08:54:22

WEB开发ASP.NETApplication

2009-07-27 15:25:40

aspx页面ASP.NET

2009-07-29 14:43:08

ASP.NET tra

2009-03-13 09:48:33

ASP.NETAjaxJQuery

2009-07-27 18:13:19

ASP.NET工厂模式

2009-07-23 14:17:41

2009-07-29 17:26:39

ASP.NET页面

2009-07-24 10:53:51

ASP.NET实现静态

2009-08-10 17:17:10

ASP.NET安装部署

2009-07-31 10:23:44

缓存页面ASP.NET缓存

2009-09-09 12:35:00

ASP.NET回车提交回车提交事件

2009-08-03 13:38:18

ASP.NET编程模型

2009-07-28 15:29:03

实现HTTP请求ASP.NET

2009-07-23 10:52:38

2009-08-05 18:22:55

2009-07-31 10:33:54

ASP.NET页面输出

2009-07-29 14:35:34

页面输出缓存ASP.NET

2009-07-21 15:40:59

Asp.Net动态页面

2009-07-23 14:21:55

ASP.NET页面

2009-07-28 16:40:11

ASP.NET异步页面
点赞
收藏

51CTO技术栈公众号