1

要在代码隐藏中添加用户控件,有两种方法。

  1. 向父页面公开用户控件构造函数。
  2. 使用 Page.LoadControl 方法。

所以基本上有两种不同的方式来完成同样的任务。一种方法在某些情况下有效而另一种方法无效吗?它们的工作方式有什么区别?什么时候更喜欢一个?

4

2 回答 2

2

我在这里找到了答案

您需要了解 Web 自定义控件和 Web 用户控件之间的区别。

Web 自定义控件,如 WebControls (DataGrid, Button, ...) 是类。要创建它们,您只需调用它们的构造函数: Dim b as Button = new Button()

Web 用户控件由一个 ASCX 页面(包含 HTML)和一个类定义。该类只是控件的代码隐藏,因此如果您调用其构造函数,则不会创建控件。这就是需要 LoadControl 方法的地方:您将 ASCX 页面的名称传递给它,它会同时加载此页面和 CodeBehind 类。

于 2012-12-21T12:26:36.300 回答
0

LoadControl主要用于在类型不可用时将用户控件动态添加到页面。大多数用户控件在可更新的网站应用程序中不可用。另请注意,由于类型不可用,动态创建的用户控件的属性很难设置。

MyControl c = new MyUserControl()是首选,但不会阻止您执行以下操作:

MyControl c = (MyControl)Page.LoadControl('path to ascx');

但是,我认为没有必要。

于 2012-06-29T14:48:18.683 回答