2009-01-06 19 views
13

我正在尋找一種方式(最好)從在使用母版頁的內容頁中找到的用戶控件強類型母版頁。如何從用戶控件引用主頁面?

可悲的是,你不能在用戶控制使用:

<%@ MasterType VirtualPath="~/Masters/Whatever.master" %> 

我試圖從用戶控件訪問母版頁的屬性,寧可不要從傳遞特性由於多個內容頁面使用相同的用戶控件,主頁面到用戶控件的內容頁面。一個變化,一個地方不變。

+0

如何在名爲「Master」的用戶控件中添加屬性,然後在聲明控件時傳遞引用? – Kevin 2009-01-06 14:26:22

+0

我試圖避免通過控件傳遞任何引用,但很好的建議。 – 2009-01-06 14:33:20

回答

18

嘗試Page.Master

Whatever whatev = (Whatever)Page.Master; 

你必須確保你正確using語句添加到您的文件的頂部,或者有資格的母版頁式直列。

一個潛在的問題是,如果此控件由主頁面不是相同類型的其他頁面使用。這隻會在運行時被捕獲。

0

你試過在usercontrol上的Page.FindControl(「name」)嗎?

0

實現它的最好方法是找到實際上是建立一個基於UserControl的自定義類,給它一個帶get訪問器的主屬性,通過this.Page.Parent直到它停止遇到主頁面(如果您正在嵌套,則不需要執行此步驟),然後將該Web控件作爲要使用的母版頁的類型返回。然後,當您添加一個新的用戶控件時,將它的基類更改爲您的自定義類的名稱。 .Master屬性將作爲您希望使用的主頁面訪問並正確轉換。

相關問題