我知道您可以轻松地与母版页共享控制。但是如果我需要与不同master下甚至不同项目中的页面共享我的控件怎么办?具体来说,我有 SQLDataSource,我希望不必在我拥有的每个 masterPage 的整个解决方案中复制它。
我需要嵌套母版页来实现这一点吗?
一种可能的解决方案是将我的 SQL DataSource 控件放在单独的页面中。并让每个不同的母版页始终将该页面加载到 ContentPlaceHolder 中。这可能吗?
我知道您可以轻松地与母版页共享控制。但是如果我需要与不同master下甚至不同项目中的页面共享我的控件怎么办?具体来说,我有 SQLDataSource,我希望不必在我拥有的每个 masterPage 的整个解决方案中复制它。
我需要嵌套母版页来实现这一点吗?
一种可能的解决方案是将我的 SQL DataSource 控件放在单独的页面中。并让每个不同的母版页始终将该页面加载到 ContentPlaceHolder 中。这可能吗?
您需要创建一个Data Access Layer (DAL)
. 因此,您可以在所有页面之间共享数据调用,而不是使用不灵活的SqlDataSource
控件。
下面的例子很基础。我使用Entity Framework
来访问数据库和Web Forms
.
public class DataAccess
{
public List<Record> GetAllRecordsByUserName(string credentials)
{
List<Record> recordList;
using (CustomEntities context = new CustomEntities())
{
IQueryable<Section> recordQuery = from records in context.Records
where records.UserName == credentials
select records;
recordList = recordQuery.ToList<Record>();
}
return recordList;
}
}
在你的代码后面
DataAccess access = new DataAccess();
List<Record> records = access.GetAllRecordsByUserName("user.name");
DropDownList1.DataSource = records;
DropDownList1.DataBind();
教程
有一个asp.net
关于创建DAL
. 我强烈建议你去。它比我的小代码片段更具启发性和教育意义。
http://www.asp.net/web-forms/tutorials/data-access/introduction/creating-a-data-access-layer-cs
IEnumerable<TEntity>
使用而不是List<TEntity>
返回类型更灵活。
最后,我做了嵌套的 Master 并将我的 SQL 数据源放在最顶层,这样每个 sub-master 都可以访问它。