2011-04-21 127 views
1

我有下面的代碼母版頁後面參考母版屬性

public partial class MasterPage : System.Web.UI.MasterPage 
{ 
    public SqlConnection cnx; 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
} 

我如何引用市民的SqlConnection CNX財產使用該母版頁的aspx.cs文件?

回答

2

在你的母版頁:

public SqlConnection CnxInMasterPage 
    { 
     get { return this.cnx; } 
    } 

在內容頁面(第一次添加使用,所以你可以參考「母版」類型)

var cnx = ((MasterPage)Master).CnxInMasterPage; 
+1

+1;好,它的智能解決方案。 – 2011-04-21 17:52:54

0

你應該聲明一個接口IMyMasterPage並把屬性放在那裏。允許您的母版頁執行它。

然後你可以在你的頁面上做到這一點。

var myMasterPage = this.MasterPage as IMyMasterPage 
+1

或者如果你永遠不會有更多的而不是一個母版頁,您可以將它們轉換爲MasterPage類本身,但該界面可以更容易地支持多個(或多個代碼不同的代碼)。 – Rup 2011-04-21 17:10:30

+0

我可以問你爲什麼推薦這種方法,而不是簡單地對現有的母版頁類型進行類型轉換,或者使用'MasterType'指令? – 2011-04-21 17:22:36

+0

@Jonathan Wood - Rup給出的原因。 – 2011-04-21 17:23:29

2

你有兩個選擇:

  1. Master屬性爲您MasterPage類型,並從那裏繼續。
  2. <%@ MasterType virtualpath="~/path/to/master.master" %>包含在您的aspx文件中,它將強烈地鍵入主屬性。