Load user control dynamically with parameters
我已经创建了一个用户控件。
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
public partial class Controls_pageGeneral : System.Web.UI.UserControl
{ private int pageId; public int PageId public int ItemIndex protected void Page_Load(object sender, EventArgs e) } |
现在我想动态创建这个控件并传递参数。
我尝试过使用 LoadControl 函数,但它只有两个构造函数:一个带有字符串(路径),另一个带有类型 t 和参数数组。
第一种方法可行,但由于我的参数,必须使用更复杂的方法LoadControl,但我不知道如何使用它。如何将我的 Control 的路径字符串设置为那个奇怪的对象 Type t?
在您的情况下,这无关紧要,因为第二种方法接受传递给正确构造函数的参数,但您根本没有构造函数来控制。
只需使用 .ascx 文件的路径加载控件,转换为正确的类型并一一设置属性:
1
2 3 |
Controls_pageGeneral myControl = (Controls_pageGeneral)Page.LoadControl(“path here”);
myControl.PageId = 1; myControl.ItemIndex = 2; |
如果你坚持使用构造函数,首先添加这样的:
1
2 3 4 |
public Controls_pageGeneral(int pageId, int itemIndex)
{ //code here.. } |
然后:
将执行与上述相同的操作,因为运行时代码将寻找接受两个整数的构造函数并使用它。
- 我需要使用哪个命名空间?恐怕我的 Controls_pageGeneral 对页面来说是未知的。
- 这是您的课程.. 如果它在不同的 Web 应用程序中,您不能这样做,否则只需将其添加到您自己的应用程序中。
- web.config 据我所知,无法定义控件。后面的代码在哪里?
- 它在我的应用程序的一个文件夹中,当我所有的用户控件都在时。但是它们都不是”生活”在其他代码隐藏文件上,尽管我可以在我的 aspx 文件中的任何地方使用它们(因为我已经在 web.config 中注册了它们)。
- 如果您的页面类有命名空间,只需将相同的命名空间添加到您在问题中发布的代码中:使用与页面类package相同的命名空间package Controls_pageGeneral 类。
来源:https://www.codenong.com/8376310/