我已经建立了一个自定义的 ASP.Net Web 用户控件;之前已经做过足够多次了,但是这个行为不端,我不知道为什么。
在调用页面直接在其标记中包含用户控件的情况下,一切都很好,并且控件按预期运行。
但是,如果页面动态添加此特定控件(添加到母版页中的占位符,这就是调用整个事情的原因),则其中的元素始终保持为 NULL - 用户控件中的任何内容都不会写入客户端,包括静态内容在用户控制范围内。
我可能哪里出错了?
我已经建立了一个自定义的 ASP.Net Web 用户控件;之前已经做过足够多次了,但是这个行为不端,我不知道为什么。
在调用页面直接在其标记中包含用户控件的情况下,一切都很好,并且控件按预期运行。
但是,如果页面动态添加此特定控件(添加到母版页中的占位符,这就是调用整个事情的原因),则其中的元素始终保持为 NULL - 用户控件中的任何内容都不会写入客户端,包括静态内容在用户控制范围内。
我可能哪里出错了?
答案已排序 - ID 无关紧要,它可以不用,但如果你这样做
Control a = new Control;
它不起作用,而
Control a = (Control)Page.LoadControl("~/Folder/Control.ascx");
确实有效,这是我深夜忘记的:-)
当您动态加载用户控件时...
对于 ASP.NET 网站项目,以下工作
Control a = new Control;
对于 ASP.NET Web 应用程序项目,以下工作
Control a = (Control)Page.LoadControl("~/Folder/Control.ascx");
当您动态添加用户控件时,您必须为每个添加的控件生成唯一 ID。
例如:
Control selWebControl = (Control)Page.LoadControl("~/DL/Templates/FileLibrary.ascx");
selWebControl.ID = "UC" + "_" + dfRow.ID;
确保将其添加到页面上的控件集合中,并确保在页面生命周期中的正确时间执行此操作。我喜欢重写 CreateChildControls。
因此,请确保您正在执行 Page.Controls.Add(myNewControl) 或 PlaceHolder1.Controls.Add(myNewControl)。
如果您显示了动态创建控件并将其添加到页面的代码,可能会有所帮助