我很难将具有自定义用户控件的页面直接修改为ASPX页面,现在需要在需要时动态加载它.用户控件通过ASCX文件具有html和其他控件,并在代码隐藏中具有代码.
我已阅读多个页面,并发现我无法直接实例化用户控件但应使用Page.LoadControl(...).问题不在于编译,但是当页面加载控件时,ASCX内的所有控件都会为空,然后崩溃.
如何在ASCX和代码隐藏中动态使用具有代码的用户控件?
我在做什么的例子(PageLoad或PagePreRender或PagePreInit)
Control c = LoadControl(typeof(MyControl), null);
myControl= (MyControl)c;
myControl.ID = "123";
myControl.Visible = false;
Controls.Add(myControl);
Run Code Online (Sandbox Code Playgroud)
MyControl确实有例如<div id="whatever" runat="server">......并且在MyControl中它将可见性设置为True或False ...但是当它这样做时,现在它崩溃了,因为"whatever"div是NULL.
我正试图围绕asp.net.我有一个很长时间的PHP开发人员的背景,但我现在面临学习asp.net的任务,我遇到了一些麻烦.这可能是因为我试图强迫框架进入它不适合的东西 - 所以我想学习如何"正确的方式".:-)
我的问题是如何在运行时以编程方式向页面添加控件.据我所知,你需要在page_init创建控件,否则它们会在下一个PostBack中消失.但很多时候我遇到的问题是我不知道要在page_init中添加哪些控件,因为它依赖于之前PostBack的值.
一个简单的场景可能是在设计器中添加了下拉控件的表单.下拉列表设置为AutoPostBack.当发生PostBack时,我需要根据下拉控件中的所选值来渲染一个或多个控件,并且最好使这些控件的行为好像它们已经被设计添加(如"回发时,行为正确").
我在这里走错了路吗?