建议去了解下页面的生命周期
http://msdn2.microsoft.com/zh-cn/library/ms178472(VS.80).aspx

解决方案 »

  1.   

    看看你的pageload里面有什么操作
    把操作放在
    if(!Page.IsPostBack)
    {
    }
      

  2.   

    protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                ///把你的代码写在这里就可以了
            }
        }
      

  3.   

    我另外建了两个测试页面,测试的结果是没有问题的,好像我遇到的问题,再现很困难似的,而且测试的结果是,虽然response的操作是在服务器端按钮的onclick事件里面,但是当response执行后,感觉上页面并没有真正回传似的,我用了一个静态变量,跟踪执行按钮的次数,而且在onclick事件开始response操作之前,都往页面的panel添加一个控件,但是正常执行时,静态变量在运行时值确实变了,添加控件的操作也确实执行了,可是并没有反映到页面上
      

  4.   

    测试代码是这样的
    private static int i;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                i = 1;
            }
            else
            {
                i = i + 1;
            }        UseSession();
        }    private void UseSession()
        {
            TextBox1.Text = Session["Default"].ToString() + i.ToString();
        }    private void AddCtrl()
        {
            CheckBox ckb = new CheckBox();
            ckb.ID = "ckb-" + i.ToString();
            ckb.Text = "ckb-" + i.ToString();
            pnl.Controls.Add(ckb);
        }    protected void Button1_Click(object sender, EventArgs e)
        {
            AddCtrl();
            Response.Clear();
            Response.BufferOutput = true;
            Response.Charset = "GB2312";
            Response.AppendHeader("Content-Disposition", "attachment;filename=Write.txt");
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            Response.ContentType = "application/ms-txt";
            this.EnableViewState = false;
            string wLine;
            System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
            wLine = "时间:" + DateTime.Now.ToString() + "\r\n";
            oStringWriter.Write(wLine);
            wLine = "测试Response";
            oStringWriter.Write(wLine);
            Response.Write(oStringWriter.ToString());
            Response.End();
        }
    这个测试的结果确实没有再现问题,又增加了新的疑问,我原有的解决方案中,确实不停的在回传执行pageload和onclick事件,而且当第一次单击按钮后,按照正常的顺序,执行pageload和onclick后,又回到pageload时捕捉到的session已经丢失了