我设置了用户名验证,和验证码验证控件。如果所有验证都过关if(page.isvalid)就写入数据库。结果提示验证码错误,page.isvalid是false吧,却写入数据库了?
学asp.net难啊,每一步都错,信心很早没了。

解决方案 »

  1.   

    呵呵,我刚开始学的时候也是经常出错,不懂就上这里来问,CSDN的哥们真的很仗义的,记得我是新手的时候还发过0分贴,都有人帮我回答,但是现在绝对不会那样的了!
      

  2.   

    为什么要if(!page.isvalid)这样就不是如果验证通过的意思了吧。无法理解?
      

  3.   

    if(!page.isvalid)   括号里面还有个 “!” 这个是 “非”
      

  4.   

    验证用户名的customvalidate验证代码:
    public void CheckUsername(Object source, ServerValidateEventArgs value)
        {
            value.IsValid = false;
            string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;";
            strConnection = strConnection + "Data Source=" + MapPath("vip.mdb");
            OleDbConnection objConnection = new OleDbConnection(strConnection);        OleDbCommand cmd = new OleDbCommand();
            String Username = Request.Form["Username"];
            cmd.CommandText = "select * from vip where vipname='" + Username + "'";
            cmd.CommandType = CommandType.Text;
            cmd.Connection = objConnection;
            try
            {
                cmd.Connection.Open();
                OleDbDataReader dr = cmd.ExecuteReader();            if (dr.Read() == false)
                {
                    value.IsValid = true;                dr.Close();
                    if (Page.IsValid)
                    {
                        string loginip = Request.ServerVariables["REMOTE_ADDR"];
                        string loginhost = Request.ServerVariables["REMOTE_HOST"];
                        string password = Request.Form["Password"];
                        string email = Request.Form["Email"];                    DateTime logintime = DateTime.Now;                    cmd.CommandText = "insert into vip([vipname],[password],[email],[loginip],[logintime],[loginhost]) values" + "('" + Username + "','" + password + "','" + email + "','" + loginip + "','" + logintime + "','" + loginhost + "')";                    cmd.CommandType = CommandType.Text;
                        cmd.Connection = objConnection;                    cmd.ExecuteNonQuery();
                    }            }
         }
            catch (OleDbException ex)
            {
                Response.Write(ex.ToString());        }        finally
            {
                cmd.Connection.Close();
                objConnection.Close();
            }    } 
    验证码的验证代码:
    void ServerValidate(Object source, ServerValidateEventArgs value)
            {
                value.IsValid = false;
                if (Request.Form["Checkword"].ToLower() == Session["VNum"].ToString().ToLower())
                    value.IsValid = true;
                
            }
      

  5.   

     if (dr.Read() == false) 
                { 
                    value.IsValid = true;    //问题很可能在这里,虽验证失败.但你这里却让他为true.                dr.Close(); 
                    if (Page.IsValid) 
                    { 
                        string loginip = Request.ServerVariables["REMOTE_ADDR"]; 
                        string loginhost = Request.ServerVariables["REMOTE_HOST"]; 
                        string password = Request.Form["Password"]; 
                        string email = Request.Form["Email"];                     DateTime logintime = DateTime.Now;                     cmd.CommandText = "insert into vip([vipname],[password],[email],[loginip],[logintime],[loginhost]) values" + "('" + Username + "','" + password + "','" + email + "','" + loginip + "','" + logintime + "','" + loginhost + "')";                     cmd.CommandType = CommandType.Text; 
                        cmd.Connection = objConnection;                     cmd.ExecuteNonQuery(); 
                    }             }