要在代码隐藏中添加用户控件,有两种方法。
- 向父页面公开用户控件构造函数。
- 使用 Page.LoadControl 方法。
所以基本上有两种不同的方式来完成同样的任务。一种方法在某些情况下有效而另一种方法无效吗?它们的工作方式有什么区别?什么时候更喜欢一个?
要在代码隐藏中添加用户控件,有两种方法。
所以基本上有两种不同的方式来完成同样的任务。一种方法在某些情况下有效而另一种方法无效吗?它们的工作方式有什么区别?什么时候更喜欢一个?
我在这里找到了答案
您需要了解 Web 自定义控件和 Web 用户控件之间的区别。
Web 自定义控件,如 WebControls (DataGrid, Button, ...) 是类。要创建它们,您只需调用它们的构造函数: Dim b as Button = new Button()
Web 用户控件由一个 ASCX 页面(包含 HTML)和一个类定义。该类只是控件的代码隐藏,因此如果您调用其构造函数,则不会创建控件。这就是需要 LoadControl 方法的地方:您将 ASCX 页面的名称传递给它,它会同时加载此页面和 CodeBehind 类。
LoadControl
主要用于在类型不可用时将用户控件动态添加到页面。大多数用户控件在可更新的网站应用程序中不可用。另请注意,由于类型不可用,动态创建的用户控件的属性很难设置。
MyControl c = new MyUserControl()
是首选,但不会阻止您执行以下操作:
MyControl c = (MyControl)Page.LoadControl('path to ascx');
但是,我认为没有必要。