我尝试修改一个包含自定义用户控件的页面,现在需要在需要时动态加载它。该用户控件包含HTML和其他控件,并通过ASCX文件与代码后台进行关联。
我已经阅读了多个页面并发现我不能直接实例化用户控件,而应该使用Page.LoadControl(...)
。问题不在编译时,而是当页面加载控件时,ASCX内部的所有控件都为null,导致崩溃。
如何动态使用具有在ASCX和代码后台中的代码的用户控件?
编辑:
我正在执行以下操作(PageLoad或PagePreRender或PagePreInit):
Control c = LoadControl(typeof(MyControl), null);
myControl= (MyControl)c;
myControl.ID = "123";
myControl.Visible = false;
Controls.Add(myControl);
MyControl中有例如<div id="whatever" runat="server">
的内容... 在MyControl内部将其可见性设置为True或False... 但是当它这样做时,现在会崩溃,因为"whatever" div是NULL。
Page.LoadControl()
对我来说运行良好。在哪个事件处理程序(Page.Init
,Page.Load
等)期间加载它? - Jørn Schou-Rode