博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Asp.net防止页面被多次提交
阅读量:6813 次
发布时间:2019-06-26

本文共 2261 字,大约阅读时间需要 7 分钟。

出处:http://blog.csdn.net/Teng_s2000/archive/2005/10/17/505928.aspx
此处提供的代码用来实现当asp.net页面中的某个Button被点击后disable掉该页面中所有的Button,从而防止提交延时导致的多次提交。基于之前的onceclickbutton脚本.
<
script language
=
"
javascript
"
>
        
<!--
        
        
function
 disableOtherSubmit()
        {            
var
 obj 
=
 event.srcElement;
            
var
 objs 
=
 document.getElementsByTagName('INPUT');
            
for
(
var
 i
=
0
; i
<
objs.length; i
++
)
            {
                
if
(objs[i].type.toLowerCase() 
==
 'submit')
                {
                    objs[i].disabled 
=
 
true
;
                }
            }        }
            
        
//
-->
        
</
script
>
public
 
class
 PreventMultiClick : System.Web.UI.Page
    {
        
protected
 System.Web.UI.WebControls.Button Button1;
        
protected
 System.Web.UI.WebControls.Button Button2;
        
protected
 System.Web.UI.WebControls.LinkButton LinkButton1;
        
protected
 System.Web.UI.WebControls.Button Button3;
    
        
private
 
void
 Page_Load(
object
 sender, System.EventArgs e)
        {
            
this
.GetPostBackEventReference(
this
.Button3);        
//
保证 __doPostBack(eventTarget, eventArgument) 正确注册
            
if
(
!
IsPostBack)
            {
                System.Text.StringBuilder sb 
=
 
new
 System.Text.StringBuilder();
                sb.Append(
"
if (typeof(Page_ClientValidate) == 'function') { if (Page_ClientValidate() == false) { return false; }}
"
);    
//
保证验证函数的执行
                sb.Append(
"
if(window.confirm('are you sure?')==false) return false;
"
);        
//
自定义客户端脚本
                sb.Append(
"
disableOtherSubmit();
"
);        
//
 disable所有submit按钮
                sb.Append(
this
.GetPostBackEventReference(
this
.Button3));    
//
用__doPostBack来提交,保证按钮的服务器端click事件执行
                sb.Append(
"
;
"
);
                Button3.Attributes.Add(
"
onclick
"
,sb.ToString());
            }
        }
        
#region
 Web Form Designer generated code
        
override
 
protected
 
void
 OnInit(EventArgs e)
        {
            
//
            
//
 CODEGEN: This call is required by the ASP.NET Web Form Designer.
            
//
            InitializeComponent();
            
base
.OnInit(e);
        }
        
        
///
 
<summary>
        
///
 Required method for Designer support - do not modify
        
///
 the contents of this method with the code editor.
        
///
 
</summary>
        
private
 
void
 InitializeComponent()
        {    
            
this
.Button3.Click 
+=
 
new
 System.EventHandler(
this
.Button3_Click);
            
this
.Load 
+=
 
new
 System.EventHandler(
this
.Page_Load);
        }
        
#endregion
        
private
 
void
 Button3_Click(
object
 sender, System.EventArgs e)
        {
            System.Threading.Thread.Sleep(
3000
);
            Response.Write(
"
Hello world!
"
);
        }
    }
此处只是disable掉所有的submit button, 我觉得其它的可提交控件也是可以通过类似的方法来disable的.

 

分类: 
本文转自快乐就好博客园博客,原文链接:http://www.cnblogs.com/happyday56/archive/2007/11/28/975010.html,如需转载请自行联系原作者
你可能感兴趣的文章
iOS第三方分享-ShareSDK
查看>>
[CodeForces954G]Castle Defense(二分答案+差分)
查看>>
webpack 配置多页面应用的一次尝试
查看>>
7 逻辑回归
查看>>
java里的基本知识
查看>>
行走在前端路上的一些想法
查看>>
hdu 5288 ZCC loves straight flush
查看>>
前端爬虫cheerio&&puppeteer
查看>>
Linux日常操作整理
查看>>
rem和em的用法
查看>>
【译】整理->20个让你效率更高的CSS代码技巧
查看>>
Prometheus学习系列(十一)之Hello World
查看>>
IDEA常用设置及推荐插件
查看>>
java多线程基本概述(十一)——ReadWriteLock
查看>>
机器学习 深度学习 计算机视觉 资料汇总
查看>>
深度学习网络结构中超参数momentum了解
查看>>
js几种创建对象的方式
查看>>
微信小程序中this关键字使用技巧
查看>>
multiprocessing的基础用法
查看>>
N的阶乘的长度 V2(斯特林近似) 求 某个大数的阶乘的位数 .
查看>>