0

我有一个带有表单和提交按钮的网页,在服务器端我使用了一个会话值来防止表单提交两次,这就像会话的初始值为 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");

.......
}

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

4

2 回答 2

0

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

Response.Redirect 未结束执行

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

于 2012-09-12T15:00:02.683 回答
0

尝试

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

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

于 2012-09-12T14:15:26.557 回答