private void Button1_ServerClick(object sender, System.EventArgs e)
{


ViewState["Validate2"] = Validate2.Text; 
Response.Write(ViewState["Validate2"]);//有输出
Response.Write(Session["ValidateCode"]);//有输出

if ((string)ViewState["Validate2"] != (string)Session["ValidateCode"]){

Response.Write("<script>javascript:alert('555!');</script>");}
//检查验证码 LoginCheck i = new LoginCheck(); bool b = i.UserCheck(UserName.Text,PassWord.Text); if (b)
{
Response.Redirect("main.aspx");
} else  {
Response.Write("<script>javascript:alert('用户名或密码错误!');</script>");
}

}为什么跳过了以下IF语句
if ((string)ViewState["Validate2"] != (string)Session["ValidateCode"]){

Response.Write("<script>javascript:alert('555!');</script>");}变量全都正确有值,为什么不执行这IF语句?????而光只有这IF语句其它删掉又会正常执行]郁闷死啊!!!!

解决方案 »

  1.   

    调试模式下看看他们的值是多少 ?相等吗?
    或者在if 后面 加上一个else 输出一个 alert('666')
    执行一下 看看 显示的是什么 是 555 还是 666
      

  2.   

    if ((string)ViewState["Validate2"] != (string)Session["ValidateCode"]){
    //不要这样比较,这样是对象在和对象比较,尽管你用string装箱了!仍然是对象,应该用ToString转换
    if (ViewState["Validate2"].ToString() != (string)Session["ValidateCode"].ToString()){
      

  3.   

    sorry!少删了一个if (ViewState["Validate2"].ToString() != Session["ValidateCode"].ToString()){
      

  4.   

    解决了,我把其余语句放在了ELSE里面,就正常了。谢谢提醒。但是还是不能理解,我那样会不行