我有一个带有表单和提交按钮的网页,在服务器端我使用会话值来阻止表单提交两次,这就像会话的初始值为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");
.......
}
是否有可能因为在检查会话值后,程序只是重定向到另一个页面而不是终止提交过程?
答案 0 :(得分:0)
尝试
Response.Redirect("~/pages/renewal/duplicaterenewal.aspx", true);
这将停止在当前页面上执行。
答案 1 :(得分:0)
显然,Response.End()不会停止执行代码(这就是它所说的)。我在这里发现了这个:
Response.Redirect not ending execution
执行return
后,您需要添加Response.Redirect()
语句来结束执行。