最近一直再研究如何防止刷新页面后重复提交的问题。在网上搜索了好多资料,好多就是用隐藏控件呀,session之类
的或者禁止按钮。但是这些好像都没有解决我的问题,后来在csdn上看了一篇博客,大致思路是利用委托的方法来防止页
面刷新提交的问题。代码整理了一下:
前台代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default7.aspx.cs" Inherits="Default7" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title>页面提交</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Button ID="btn" runat="server" Text="确 定" OnClientClick="Submitting(this);return true;" OnClick="btn_Click" /> <br /> </div> </form> </body> </html
后台代码:
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class Default7 : System.Web.UI.Page { private static bool SubmitState = false; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { SubmitState = false; } //判断页面是否初始化以及提交的状态 if (IsPostBack && SubmitState) { //从委托队列中删除原始事件 this.btn.Click -= new EventHandler(btn_Click); this.btn.Click += new EventHandler(kenButton1_Click); } } //重复提交事件 private void kenButton1_Click(object sender, EventArgs e) { Response.Write("请不要重复提交,或者刷新"); } //提交 protected void btn_Click(object sender, EventArgs e) { Response.Write("提交成功"); SubmitState = true; } }