我已经构建了一个自定义的ASP.Net Web用户控件;这之前已经做了足够多次,但是这个行为是行为不端的,我无法发现原因。
如果调用页面直接在其标记中包含用户控件,则一切正常,控件的行为与预期一致。
但是,如果页面动态添加此特定控件(对于母版页中的占位符,这就是调用整个事物),其中的元素将保持为NULL - 用户控件中的任何内容都不会写入客户端,包括用户控件中的静态内容。
我哪里可能出错?
答案 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)。
如果您展示了动态创建控件并将其添加到页面
的代码,可能会有所帮助