asp.net表单提交两次

时间:2012-09-12 14:05:02

标签: asp.net double-submit-problem

我有一个带有表单和提交按钮的网页,在服务器端我使用会话值来阻止表单提交两次,这就像会话的初始值为0并在之后将其转为1用户点击提交按钮,每次提交按钮都会先检查会话值。

但是,当我们的项目发布时,我发现同一个人有两个记录(这意味着他们提交了两次我猜,并且它经常不会发生在一两个人身上),以及它们之间的时间间隔这两个记录非常小,比如0.3秒,所以首先我认为他们可能会双击提交按钮,但是在我尝试使用我的计算机后,它仍然只将一条记录插入数据库

我很困惑这是怎么发生的,以及如何防止它?

以下是代码:

        protected void Page_Init(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Session["IsBackForwordPayment"] = 0;
        }
    }

    protected void submit_Click(object sender, EventArgs e)
    {

       if (Session["IsBackForwordPayment"] != null && Session["IsBackForwordPayment"].ToString() != "0")
            Response.Redirect("~/pages/renewal/duplicaterenewal.aspx");

.......
}

是否有可能因为在检查会话值后,程序只是重定向到另一个页面而不是终止提交过程?

2 个答案:

答案 0 :(得分:0)

尝试

Response.Redirect("~/pages/renewal/duplicaterenewal.aspx", true);

这将停止在当前页面上执行。

答案 1 :(得分:0)

显然,Response.End()不会停止执行代码(这就是它所说的)。我在这里发现了这个:

Response.Redirect not ending execution

执行return后,您需要添加Response.Redirect()语句来结束执行。