感谢
答案 0 :(得分:1)
不确定。如果您的意思是共享,就像在所有页面中使用相同的SqlDataSource一样,创建母版页并将数据源放在母版中。在代码隐藏中,将其公开为主服务器的属性。从那里,您可以从任何使用Master的页面中引用它。
第二个选项 - 创建一个基页类:
public class MyPage : Page
{
private SqlDataSource mDataSource;
public override void OnLoad(EventArgs e)
{
base.OnLoad(e);
// some code to init your data source - depending on your
// implementation, this may need to be in OnInit instead
}
public SqlDataSource DataSource
{
get { return mDataSource; }
}
}
在这种情况下,每次创建新页面时,请转到后面的代码并将声明从实现Page更改为MyPage。所有实现MyPage的页面都有一个SqlDataSource成员,虽然每个页面都有自己的实例,所以它并没有真正“共享”相同的SqlDataSource。
我认为,任何一个选项都可以让你到达目的地。
更新:海报要求作为主人的财产公开的例子:
给出具有以下内容的母版页:
<asp:SqlDataSource runat="server" ID="mDataSource" ... the rest of your properties .... />
<asp:ContentPlaceHolder runat="server" ID="MainContent"/>
在master的代码隐藏中,定义属性:
public class SiteMaster : System.Web.UI.MasterPage
{
public SqlDataSource MasterDataSource
{
get { return mDataSource; }
}
// the rest of your master page's codebehind
}
在您使用母版页定义的页面中,在@Page声明下面添加以下内容:
<%@ MasterPage VirtualPath="~/site.master"%>
现在,在该页面的代码隐藏中,您可以参考:
protected void Page_Load(object sender, EventArgs e)
{
SqlDataSource ds = this.Master.MasterDataSource;
}
只要您拥有&lt;%@ MasterType VirtualPath =“〜/ PATH TO YOUR MASTER”%&gt;在您的aspx页面中,您可以引用在master中公开的任何属性。
快乐的编码。
乙
答案 1 :(得分:0)
控件特定于页面。要跨页面共享它,请将其放在UserControl中,然后通过UserControl的公共属性公开它。
答案 2 :(得分:0)
如果您的意思是连接字符串,答案是肯定的。您可以将它放在公共共享类中。
如果您的意思是在多个页面中打开连接。否。
您应该始终关闭连接以避免内存泄漏。