试试:    public Label lbl = new Label();    protected void Page_Load(object sender, EventArgs e)
    {
        lbl.ID = "lbl";
        PlaceHolder1.Controls.Add(lbl);
        if (!IsPostBack)
        {
            lbl.Text = "123";
        }
    }

解决方案 »

  1.   

    PlaceHolder是不可以的,除非楼上那样Page_Load每次都去加载,但是这样程序并不是最优化的可以采用NickLee.Web.UI.DynamicControlsPlaceholder
        protected void Page_Load(object sender, EventArgs e)
        {

            if (!IsPostBack)
            {
               Label lbl = new Label();
               //注意先设置ID
               lbl.ID="lbl";
        if (DCP.FindControl("lbl") == null)
                    {
                        DCP.Controls.Add((Control)lbl);
                    }
                lbl.Text = "123";
            }
            
        }
    控件参考FortuneBase:www.cnblogs.com/mail-ricklee
      

  2.   

    1、2年前我曾经说过几次,我们在各种asp.net论坛上以及书籍中做的许多“范例”是误导初学者的。实际上很多初始化功能应该写在Page_PreRender中,而不应该写在Page_Load中。Page_Load应该准确地完成它自己的功能,但尽量应该避免把那些本应该在之后的事件处理程序中写的代码放到这里。如果我写这段代码,我会写:    public Label lbl = new Label();    protected void Page_Load(object sender, EventArgs e)
        {
            lbl.ID = "lbl";
            PlaceHolder1.Controls.Add(lbl);
        }    protected void Page_PreRender(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                lbl.Text = "123";
            }
        }
      

  3.   

    我们总是在Page_Load中去设置值,或者绑定数据。为什么这样?因为这样最简单。如果我们双击页面,它默认弹出的事件方法是Page_PreRender,我相信我们网上、大多数入门书上那些写在Page_Load中的大多数代码就都会移动到PreRender中去。大家都图省事随便写代码,写的人多了也就成了“标准”了,似乎天经地义,而很少有人考虑这仅仅是因为最初的一个小意外而造成的。
      

  4.   

    继承于PlaceHolder,但是ViewState保存控件状态
    protected override void LoadViewState(object savedState) 
    {
    object[] viewState = (object[]) savedState; //Raise PreRestore event
    OnPreRestore(EventArgs.Empty); //recreate the child controls recursively
    Pair persistInfo = (Pair) viewState[0];
    foreach(Pair pair in (ArrayList) persistInfo.Second)
    {
    RestoreChildStructure(pair, this);
    } //Raise PostRestore event
    OnPostRestore(EventArgs.Empty);
                //修改部分
                //base.LoadViewState(viewState[1]);
                if(viewState[1]!=null)
                {
                    byte[] temp = (byte[])viewState[1];
                    object obj = NickLee.Common.CompressData.UnCompressObject(temp);
                    base.LoadViewState(obj);
                    return;
                }
                base.LoadViewState(viewState[1]);
    }protected override object SaveViewState()
    {
    if(HttpContext.Current == null)
    return null; object[] viewState = new object[2];
    viewState[0] = PersistChildStructure(this, "C");
                //修改部分
                if(base.SaveViewState()!=null)
                {
                    byte[] temp = NickLee.Common.CompressData.Compress(base.SaveViewState());
                    viewState[1] = temp;
                }
                //viewState[1] = base.SaveViewState();
    return viewState;
    }