您的位置:首页 > 编程语言 > ASP

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

2010-07-08 10:15 579 查看
原文地址:http://dotnet.csdn.net/page/e4e6987b-7255-4fb4-a786-b3e65bd40d40

进行了一些整理,如下:

===========================================================

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script language="javascript" type="text/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>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Button1" />
<asp:Button ID="Button2" runat="server" Text="Button2" />
<asp:Button ID="Button3" runat="server" Text="Button3" />
<asp:LinkButton ID="LinkButton1" runat="server">LinkButton</asp:LinkButton>
</div>
</form>
</body>
</html>

=============================================================

protected void Page_Load(object sender, 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));

Button3.Attributes.Add("onclick", sb.ToString());
}
}

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 EventHandler(Button3_Click);
this.Load += new System.EventHandler(this.Page_Load);
}

private void Button3_Click(object sender, System.EventArgs e)
{
System.Threading.Thread.Sleep(3000);
Response.Write("Hello world!");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: