我有一个用户控件,它会根据用户偏好动态地向其中添加其他用户控件。我在使用重载的 LoadControl 方法添加控件时遇到问题。
我尝试这样做:
ddControl = typeof(DropDownControl), new object[] { testData, FilterModel.Models[i] });
但是,ddControl 中的所有控件都没有初始化,当我尝试将数据源设置为它包含的组合框时,它爆炸了。我将模型和数据源传递给设置属性、默认值等的构造函数。在创建控件后,我是否必须创建 LoadModel() 方法来加载模型值
(DropDownControl)LoadControl("~/WebUserControls/DropDownControl.ascx")
或者我可以在动态声明它的同时以某种方式通过构造函数完成它吗?
如果这不清楚,请告诉我如何做到这一点。谢谢!
最佳答案
您可以使用 PlaceHolder
动态添加这些用户控件并通过公开方法来执行其他操作,这样您就可以更好地控制一切,而不会干扰控件的生命周期。
不要使用构造函数,而是使用属性和方法。
关于asp.net - 我可以使用构造函数动态创建用户控件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11457929/