2012-06-29 83 views
1

要在代碼隱藏中添加用戶控件,有兩種方法。LoadControl和暴露構造函數之間的區別?

  1. 將usercontrol構造函數公開給父頁面。
  2. 使用Page.LoadControl方法。

所以基本上有兩種不同的方式來完成同一個任務。一種方法在某些情況下工作,另一種方法不工作?它們的工作方式有什麼區別?和什麼時候更喜歡一個呢?

回答

0

LoadControl主要用於在類型不可用時動態地將用戶控件添加到頁面。大多數用戶控件在可更新的網站應用程序中不可用。另請注意,由於該類型不可用,動態創建的用戶控件的屬性很難設置。

MyControl c = new MyUserControl()是首選,但不會做這樣的事情阻止你:

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

不過,我不認爲有必要。

+0

這不完全正確。看我的帖子 –

2

我找到了答案here

您需要了解的Web自定義控件和 Web用戶控件之間的差異。

Web自定義控件,如WebControls(DataGrid,Button,...)是 類。要創建它們,您只需調用它們的構造函數:Dim b as Button = new Button()

Web用戶控件由ASCX頁面(包含HTML)和 類定義。該類只是控件的代碼隱藏,因此如果您調用其構造函數,則不會創建該控件。這就是需要使用LoadControl方法的地方:將ASCX頁面的名稱 傳遞給它,並加載此頁面和CodeBehind類。

相關問題