在ASP.NET中页面刷新时再次上载页面数据

时间:2010-02-21 08:14:33

标签: asp.net sql vb.net

出于某种原因,当用户点击提交按钮并重新刷新页面时,相同的数据会再次上传到我的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

2 个答案:

答案 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");