动态添加时,用户控件的元素是否未初始化?

时间:2010-06-30 23:55:16

标签: asp.net webusercontrol webusercontrols

我已经构建了一个自定义的ASP.Net Web用户控件;这之前已经做了足够多次,但是这个行为是行为不端的,我无法发现原因。

如果调用页面直接在其标记中包含用户控件,则一切正常,控件的行为与预期一致。

但是,如果页面动态添加此特定控件(对于母版页中的占位符,这就是调用整个事物),其中的元素将保持为NULL - 用户控件中的任何内容都不会写入客户端,包括用户控件中的静态内容。

我哪里可能出错?

4 个答案:

答案 0 :(得分:2)

答案排序 - ID无关紧要,没有,但如果你这样做

Control a = new Control;

它不起作用而

Control a = (Control)Page.LoadControl("~/Folder/Control.ascx");

确实有效,这是我在深夜忘记的事情: - )

答案 1 :(得分:1)

动态加载用户控件时...

对于ASP.NET网站项目,以下工作

Control a = new Control;

对于ASP.NET Web应用程序项目,以下工作

Control a = (Control)Page.LoadControl("~/Folder/Control.ascx");

答案 2 :(得分:0)

当您动态添加用户控件时,您必须为每个添加的控件生成唯一ID。

例如:

Control selWebControl = (Control)Page.LoadControl("~/DL/Templates/FileLibrary.ascx");
selWebControl.ID = "UC" + "_" + dfRow.ID;

答案 3 :(得分:0)

确保将其添加到页面上的Controls集合中,并确保您在Page LifeCycle中的正确时间执行此操作。我想覆盖CreateChildControls。

因此请确保您正在执行Page.Controls.Add(myNewControl)或PlaceHolder1.Controls.Add(myNewControl)。

如果您展示了动态创建控件并将其添加到页面

的代码,可能会有所帮助