2011-10-19 16 views
0

在這個動態加載用戶控件的例子中,我該如何聲明「TimeDisplay」?這可以在後面的代碼中完成,還是在ascx頁面中完成?這是一本書的例子,我猜想有代碼文件相對於彼此位置的假設。如何在LoadControl調用中引用類類型?

protected void Page_Load(object sender, EventArgs e) 
{ TimeDisplay ctrl = (TimeDisplay)Page.LoadControl("TimeDisplay.ascx"); 
PlaceHolder1.Controls.Add(ctrl); 
} 

回答

1

你需要在你的aspx頁面添加到控制一個參考:

<%@ Reference Control="~/Controls_Path/TimeDisplay.ascx" %> 
+0

這不是沒有'TagPrefix'或'TagName' –

+0

@JamesJohnson工作,當然它會:-) –

+0

它可能不會導致錯誤,但您如何計劃在標記中引用該控件? –

0

要聲明中標記的控件,你需要在頁面指令或註冊控件web.config。在web.config中註冊控件通常是首選,因爲您可以在應用程序的任何位置使用控件。

配置方法:

<pages> 
    <controls> 
     <add tagPrefix="uc1" src="~/controls/myusercontrol.ascx" tagName="myusercontrol" /> 
    </controls> 
</pages>    

Page指令方法:

<%@ Register TagPrefix="uc1" TagName="MyUserControl" Src="~/controls/myusercontrol.ascx" %> 
+0

他想創建控件「動態」,爲什麼你需要在標記中聲明一個標記。 –