在ASP.NET中防止页面多次提交的代码实现
创始人
2024-04-23 02:20:48
0

此处提供的代码用来实现当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中的对象描述

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...