出于某种原因,当用户点击提交按钮并重新刷新页面时,相同的数据会再次上传到我的SQL Server 2005数据库。我不知道这会发生什么...........为什么会发生这种情况?我正在使用SQL数据源!!
我的代码
Try
'See if user typed the correct code.
If Me.txtSecurity.Text = Session("Captcha") Then
If Session("NotifyMe") = "Yes" Then
SendEmailNS()
End If
RaterRate.Insert()
RaterRate.Update()
DisableItems()
lblResultNS.Text = "Thank you for leaving a comment"
LoadCompanyList()
LoadRateRecords()
txtCommentNS.Text = ""
txtSecurity.Text = ""
lblResultNS.Focus()
Else
Session("Captcha") = GenerateCAPTCHACode()
txtSecurity.Text = ""
txtSecurity.Focus()
Validator10.Validate()
End If
Catch ex As Exception
lblResultNS.Visible = True
lblResultNS.Text = ex.Message.ToString
lblResultNS.Focus()
End Try
答案 0 :(得分:1)
当用户访问您的网页时,会生成新的验证码。在发布之后,或者其检查验证码但不生成新的。将'captcha set'代码移动到外部范围。
If Me.txtSecurity.Text = Session("Captcha") Then
...
Else
...
End If
Session("Captcha") = GenerateCAPTCHACode()
答案 1 :(得分:0)
这种情况正在发生,因为WebForms依赖于PostBack模型。每次单击按钮时,页面内的单个表单将与viewstate一起发布到服务器。当您按F5时,通常会收到警告,表明将重新发布表单,如果单击是,则在服务器上执行相同的操作。避免这种情况的一种方法是在保存到数据库后执行重定向:
Response.Redirect("~/success.aspx");