Asp.net

LoadControl 與構造 ASP.Net 控制項

  • September 28, 2010

我有一個問題,為什麼我們只能使用 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 的子控制項為空,但是當我使用以下方法時:

  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的子控制項不為空。有誰可以向我解釋為什麼當我使用建構子時,asp .net 不創建 wucDate 的任何子控制項???謝謝

動態載入使用者控制項時,確保標準 ASP.NET 頁面事件管道已啟動並正常進行非常重要。當您使用 new 運算符創建使用者控制項的實例時,該使用者控制項未正確添加到 ASP.NET 的事件系統中。如果事件(Init、Load、PreRender 等)沒有觸發,那麼您的控制項將永遠無法正常執行。這就是為什麼必須使用 LoadControl 的原因,因為這將確保您的使用者控制項實例被正確創建並附加到 ASP.NET。

引用自:https://stackoverflow.com/questions/1320419