我有一个表单和一个提交按钮的网页,并在服务器端我用一个会话值来防止表单提交两次,这就像会话的初始值为0并在用户点击提交按钮后将其变为1,每次提交按钮都会先检查会话值。asp.net表单提交两次
但是,当我们的项目发布时,我发现同一个人有两个记录(这意味着他们提交了两次我猜,而且它并不经常发生在一两个人身上),并且时间间隔这两个记录之间的距离非常小,比如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");
.......
}
是否有可能因为检查会话值后的程序只是重定向到另一个页面,但不能终止提交过程?
你的页面中有ImageButton吗? http://stackoverflow.com/questions/1498269/asp-net-double-click-problem –
Response.Redirect(“字符串”)自动调用Response.End(),所以执行应该停止。你确定这不是多次点击?在form.submit页面上的任何Javascript?另外...它是否在UpdatePanel(AJAX)中?或者只是标准的Webforms? – theyetiman
@theyetiman我试过多次点击,一切都还好,但它实际上是标准的webform – pita