//功能:登录页面A——>成功登录页面B
//A页面代码
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        bool Checked = true;
        if (Checked == true)
        {
            Session["UserName"] = txtUserName.Text;
            Session["Pwd"] = txtPwd.Text;
            Response.Redirect("loginSuccess.aspx");
        }
    }
//B页面代码
    protected void Page_Load(object sender, EventArgs e)
    {
            if (Session["UserName"] == null) {
                Label1.Text = "没有登录";
            }
            else{
                Label1.Text="当前用户:"+Session["UserName"];
                Label1.Text+="<br>"+"密码:"+Session["Pwd"];
            }    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Session.Abandon();
       
    }
问题是:为何要第一次单击B页面的Button1按钮,没有任何反映,必须单击第二次Button1按钮,才能销毁会话?
请大家指教?

解决方案 »

  1.   

    因为是事件执行顺序问题。先执行的是Page_Load,然后才是 Button1_Click
      

  2.   

    第一次点击页面的时候已经销毁了 但是Page_Load在点击事件的前面执行的,等第二次点击的时候先执行Page_Load事件的时候你才看到效果
      

  3.   

    你可以
    protected void Button1_Click(object sender, EventArgs e)
      {
      Session.Abandon();
      Response.Redirect("b.aspx")
       
      }
      

  4.   


    一般执行完Abandon后,都会再重定向到本页面