动态加载usercontrols - 回发问题

时间:2011-10-21 12:50:00

标签: c# asp.net user-controls postback page-lifecycle

我试图在aspx页面上动态加载用户控件,但它可以工作,但我得到回发问题?我在usercontrol上有一个图像按钮,我想要显示一个图像但是当我点击按钮时页面刷新并且不显示图像?我在aspx页面和后端代码上有一个占位符,我有这个:

 protected void Page_Load(object sender, EventArgs e)
 {      

     if (!IsPostBack)
     {
            Control uc = Page.LoadControl("~/UserControls/Mycontrol.ascx");
            placeholder1.Controls.Add(uc);

     }
 }

我是否需要在page_preinit或page_init中执行某些操作?

3 个答案:

答案 0 :(得分:5)

您应该始终在每个帖子的Page_init上重新加载用户控件。

答案 1 :(得分:2)

必须在每次回发时添加添加到页面的动态控件,而不仅仅是第一个。删除!IsPostBack条件。其次,它们必须在init或preinit期间添加,因为这样,viewstate将被正确捕获和恢复(ASP.NET恢复init和load事件之间的viewstate)。

答案 2 :(得分:1)

为控件提供ID,并在Page_init

中加载控件
uc.ID = "your id";