2011-04-21 83 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文件中,它将强烈地键入主属性。