Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim rd As New Random
        Dim RdNum As Integer = rd.Next(1000, 9999)
        Session("checkcode") = RdNum
        Dim newbitmap As New Bitmap(36, 16, Imaging.PixelFormat.Format32bppArgb)
        Dim g As Graphics = Graphics.FromImage(newbitmap)
        Dim rectangle As New RectangleF(0, 0, 36, 16)
        g.FillRectangle(New SolidBrush(Color.BurlyWood), rectangle)
        Dim txtfont As New Font("宋体", 10)
        g.DrawString(RdNum.ToString, txtfont, New SolidBrush(Color.Blue), rectangle)
        newbitmap.Save(Server.MapPath("") & "\test.gif")
    End Sub    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If CStr(TextBox1.Text) = "" Then
            Response.Write("<script>alert('请输入验证码!')</script>")
        Else
            If CStr(TextBox1.Text) <> Session("checkcode") Then
                Response.Write("<script>alert('验证码错误!')</script>")
            Else
                Response.Write("<script>alert('验证码验证成功!')</script>")
            End If
        End If
    End Sub
End Class

解决方案 »

  1.   

    是不是PageLoad里面没有if(!IsPostBack)的原因?
      

  2.   

    加上
    if(!IsPostBack)
    要不回发不刷新
      

  3.   

    If CStr(TextBox1.Text) <> Session("checkcode").ToString() Then 
    Session("checkcode")应该是一个对像吧,加一个ToString()试试看,对的C#代码如下,可参考一下,VB.net不熟悉
    if(TextBox1.Text.Trim()==Session["checkcode"].ToString().Trim())
    {
      //登录成功
    }
    else
    {
       //登录失败
    }还有你的javasctipt输出,尽量不要直接用response.write(
    最好采用page.ClientScript.RegisterClientScriptBlock
    或者
    page.ClientScript.RegisterStartupScript
    来做
      

  4.   

    就是没加这个的 !IsPostBack 原因
      
      你可以调式就会发现  当提交的时候  又重新执行load里的事件  那样就又生成了一个验证码 这样就不会成功了