asp.net - LoadControl与构造ASP.Net控件

标签 asp.net dynamic controls

我有一个问题,为什么我们只能使用LoadControl添加动态控件。
例如:

public partial class wucReportParam : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
          wucDate() ctrl = new wucDate();
          pnl.Controls.Add(ctrl);
    }
}

在wucDate的page_load方法中时,wucDate的子控件为null,但是当我使用以下方法时:
   public partial class wucReportParam : System.Web.UI.UserControl
    {
        public Report Report;

        protected void Page_Load(object sender, EventArgs e)
        {
              ctrl = (wucDate)LoadControl(@"Reports\wucDate.ascx");
              pnl.Controls.Add(ctrl);
        }
    }

在wucDate的page_load方法中,wucDate的子控件不为null。
有谁能向我解释为什么当我使用构造器时,asp .net不创建wucDate的任何子控件?谢谢

最佳答案

动态加载用户控件时,确保标准ASP.NET页面事件管道已启动并正常进行很重要。当您使用new运算符创建用户控件的实例时,该用户控件未正确添加到ASP.NET的事件系统中。如果事件(Init,Load,PreRender等)没有触发,则您的控件将永远无法正常运行。这就是为什么必须使用LoadControl的原因,因为这将确保正确创建用户控件的实例并将其附加到ASP.NET。

关于asp.net - LoadControl与构造ASP.Net控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1320419/

相关文章:

javascript - 在 HTML canvas 中使用鼠标控制游戏

spring - 什么是 Spring Framework 中的依赖注入(inject)和控制反转?

windows - 鼠标滚轮事件

c# - 尝试将数据从 WPF 应用程序发送到任何 Web 浏览器上的网页

asp.net - 如何阅读 system.webserver 配置部分?

c - 如何在C中动态分配矩阵?

c - 如何仅将输入数组的一部分用于函数?

c# - 使用 javascript 进行 Asp.Net 中继器控制

c# - Web 应用程序和网站有什么区别?

java - 使用索引 (i) 在 for 循环中声明变量