0

我知道您可以轻松地与母版页共享控制。但是如果我需要与不同master下甚至不同项目中的页面共享我的控件怎么办?具体来说,我有 SQLDataSource,我希望不必在我拥有的每个 masterPage 的整个解决方案中复制它。

我需要嵌套母版页来实现这一点吗?

一种可能的解决方案是将我的 SQL DataSource 控件放在单独的页面中。并让每个不同的母版页始终将该页面加载到 ContentPlaceHolder 中。这可能吗?

4

3 回答 3

0

您需要创建一个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

于 2012-06-14T15:00:31.207 回答
0

IEnumerable<TEntity>使用而不是List<TEntity>返回类型更灵活。

于 2012-06-14T15:22:11.117 回答
0

最后,我做了嵌套的 Master 并将我的 SQL 数据源放在最顶层,这样每个 sub-master 都可以访问它。

于 2012-06-14T15:52:17.127 回答