我有一個aspx頁面,它繼承了一個擁有受保護屬性的母版頁。就像這樣:C#ASPX:如何獲得控制中的父頁面的繼承屬性?
母版 { 保護串propX .. }
我的頁面:母版
--- myControl:用戶控件
在myControl代碼隱藏我想訪問propX
任何想法?
謝謝!
我有一個aspx頁面,它繼承了一個擁有受保護屬性的母版頁。就像這樣:C#ASPX:如何獲得控制中的父頁面的繼承屬性?
母版 { 保護串propX .. }
我的頁面:母版
--- myControl:用戶控件
在myControl代碼隱藏我想訪問propX
任何想法?
謝謝!
也許試着將屬性myControl
類別轉換爲MyPage
類別?
字符串值=((我的頁面)this.Page).propX
如果你想從其他類訪問此屬性(如myControl
),財產propX
訪問修飾符應設置到internal
或public
我假設,您已將myControl
對象放在MyPage
頁面上。
您可以更改字符串的訪問修飾符。也許把它設置爲內部。
你確定你是從母版頁繼承嗎?添加MasterPage指令並不意味着它從它繼承。通常一個aspx頁面應該直接或間接從System.Web.UI.Page繼承。
主頁面不是「繼承的」,這意味着受保護的成員不能從頁面類(或控件類)訪問。你最好的選擇是使財產公開或內部。
對不起,我應該更清楚。 masterpage只是一個我創建的繼承System.Web.UI.Page的類,並且在masterpage中執行我的init工作,然後設置MyPage:masterpage。我試過你的內部建議,它不起作用。 – user259286
啊好的。您永遠無法從UserControl訪問受保護的屬性。受保護的屬性只能從直接從它們繼承的類訪問。內部屬性只能由同一個程序集/項目中的其他類訪問。如果您的UserControl和MasterPage在不同的程序集/項目中,那麼您將它設置爲公共的唯一選項。如果它們在同一個程序集中,並且內部不起作用,那麼肯定還有其他一些問題 - 也許完整的代碼示例會有所幫助。 – Martyn
就是這樣!謝謝。 – user259286