0

大家好,我有一个用户控件,我将其加载到占位符中并在单击按钮时显示它,这是第一次工作正常,但是如果我再次单击按钮,代码将被执行但用户控件未显示请有任何帮助

protected void btn_Click(object sender, EventArgs e)
    {
        placeholder.Controls.Clear();
        UserControl1 usrcntrl= (UserControl1)LoadControl("~/UserControl.ascx");
        placeholder.Controls.Add(usrcntrl);
    }
4

1 回答 1

0

您需要在每个回发上重新创建所有动态控件,并且Page_Load最迟使用与以前相同的 ID。

真正了解动态控制

这是一个可能的实现,可以通过以下方式存储已创建控件的数量ViewState在运行时查找控件

Q: Do you want to add only one or multiple of this control?
A: Only one user control

无论如何,您必须重新创建此控件。但我建议使用您刚刚制作的静态控件VisibleViewState因为 ASP.NET 可以更好地处理声明性控件,所以这不那么复杂、更易读甚至更高效。

真正理解 ViewState

于 2013-10-07T09:02:44.580 回答