動態地在母版頁中包含不同的用戶控件。以編程方式將用戶控件加載到母版頁中的div
只有一些繼承母版頁的頁面才需要顯示一些用戶控件。我需要知道什麼是顯示這些用戶控件的最佳選擇。我們能否決定要加載哪個用戶控件,並通過代碼以編程方式進行操作?或者有沒有在JavaScript或jQuery的方法來做到這一點?
我想知道如何通過編程方式將用戶控件加載到內容頁面的母版頁中的div。
動態地在母版頁中包含不同的用戶控件。以編程方式將用戶控件加載到母版頁中的div
只有一些繼承母版頁的頁面才需要顯示一些用戶控件。我需要知道什麼是顯示這些用戶控件的最佳選擇。我們能否決定要加載哪個用戶控件,並通過代碼以編程方式進行操作?或者有沒有在JavaScript或jQuery的方法來做到這一點?
我想知道如何通過編程方式將用戶控件加載到內容頁面的母版頁中的div。
可以使用在所有基於TemplateControl類(如頁面,用戶控件和母版)的LoadControl method可動態加載用戶控件。有關擴展說明,請參閱this MSDN article。
var userControl = (TheTypeOfMyUserControl)LoadControl("~/MyUserControl.ascx");
var div = TheNameOfMyRunAtServerDiv;
div.Controls.Add(userControl);
編輯:上述需要被放置在母版。如果您想從內容頁面調用它,您可以在頁面可以調用的MasterPage上創建一個公共方法(以用戶控制路徑作爲參數)。
從母版,他要麼需要添加得到「TheNameOfMyRunAtServerDiv」 <%@ VirtualPath的MasterType =「〜/ MastPageName.master」%>他的子頁面或使用((MasterPageName)This.Master).TheNameOfMyRunAtServerDiv爲他的網頁將無法直接訪問主頁面的控件,否則 – 2012-01-10 08:11:23
正確。可以在MasterPage中創建一個用於加載UserControl的方法,然後可以從用戶控制路徑作爲參數的頁面調用該方法。不知道具體情況很難說「最好」的方式。 – PHeiberg 2012-01-10 08:49:22
下面的代碼會爲你工作,
UserControl uc = (UserControl)LoadControl("controlPath");
div.Controls.Add(uc);
參考: http://msdn.microsoft.com/en-us/library/c0az2h86(v=VS.90).aspx
如果用戶控件有一個模板(ASCX)是行不通的,這是具有用戶控制的一個要點。該控件必須使用LoadControl方法加載。 – PHeiberg 2012-01-10 07:47:38
@PHeiberg:感謝您的評論。更新了答案。 – 2012-01-10 07:51:50
的示例代碼一點點的將是巨大的,使人們可以看到你到底想實現什麼,到目前爲止,你已經嘗試過什麼:) – bardiir 2012-01-10 07:24:50