日期:2014-05-18  浏览次数:20633 次

Page_Load里的Label1.Text = Session["aaa"].ToString();好像没执行,必须再回传一次才能显示出来,咋回事?
代码很简单.用TextBox1设置Session   ,   当Page_Load的时候就显示出来

        protected   void   Page_Load(object   sender,   EventArgs   e)
        {
                if   (Session[ "aaa "]!=null)
                        Label1.Text   =   Session[ "aaa "].ToString();
        }
        protected   void   Button1_Click(object   sender,   EventArgs   e)
        {
                Session[ "aaa "]   =   TextBox1.Text;
        }

当我在TextBox1   里写个 "人咬狗 "   然后点击Button1   以后,页面刷新,但是Label1里的值没变.必须我再点一次Button1   Label1才正确显示出 "人咬狗 "

完了我又做个试验.我又添加了一个Button2.   Button2的Click   里什么都不做.
我在TextBox1   里写个 "人咬狗 "   然后点击Button1   以后,页面刷新,Label1里的值没变.然后我再点一次Button2   Label1也正确显示出 "人咬狗 ".   就好像必须给Session赋值以后再PostBack一次才能显示


------解决方案--------------------
这个理由很简单

因为你每次点击按钮的时候,页面都发生了一次回传,这个时候先发生的是Page_Load事件,然后才是你的Button1_Click事件,所以你点了按钮后Session的值虽然已经发生了改变,但标签的值不会马上变(因为Page_Load在前,Button1_Click在后)