我可以使用构造函数动态创建用户控件吗



我有一个用户控件,它将根据用户偏好动态添加其他用户控件。我在使用重载LoadControl方法添加控件时遇到问题。

我试过这样做:

ddControl = typeof(DropDownControl), new object[] { testData, FilterModel.Models[i] });

然而,ddControl中的任何控件都没有初始化,当我试图将数据源设置为它所包含的组合框时,它爆炸了。我将一个模型和一个数据源传递给构造函数,该构造函数设置属性、默认值等。在创建像这样的控件后,我是否必须创建LoadModel()方法来加载模型值

(DropDownControl)LoadControl("~/WebUserControls/DropDownControl.ascx")

或者,我可以在动态声明构造函数的同时,以某种方式通过构造函数来完成这一切吗?

如果这还不清楚,请告诉我如何做到。谢谢!

您可以使用PlaceHolder动态添加这些用户控件,并通过公开这样做的方法来执行其他操作,这样您就可以在不干扰控件生命周期的情况下对所有内容进行更多控制。

不要使用构造函数,而是使用属性和方法。

最新更新