页面上或每个UserControl中的ASP.NET数据绑定?

时间:2012-01-17 19:54:46

标签: c# asp.net vb.net

是否更好地在页面上执行数据访问操作,然后使用检索到的数据填充每个usercontrol的属性。

- 或 -

如果每个UC调用业务层并独立提取自己的数据而不必依赖页面,那会更好。

现有条件: 1.网页用于数据访问的任何信息(查询字符串,URL等)也可供各个UC使用。 2.两种解决方案都使用缓存。

我的同事坚持认为第一个选项更好,因为数据访问只在页面上发生一次。

第二个选项对我来说似乎更合乎逻辑,因为它允许我将UC放在另一个页面上而无需在页面本身上进行任何额外的连线。页面和UC真正解耦。

请告知为什么一个人比另一个好。

2 个答案:

答案 0 :(得分:3)

在大多数情况下,第一种选择更好。

UserControl不是控制器而是页面。它应该显示不访问它的数据。该页面通常设置UserControl的属性。

其中一个目的是可重用性。如果与数据源硬连接,这将减少。它应该适用于任何类型的DAL,它根本不应该打扰它们。

但如果它的唯一目的是封装(例如,作为TabContainer的TabPanel中使用的容器控件),则UserControl是页面替换,因此也会进行数据访问和事件处理。你不会经常重复使用这种UserControl。

答案 1 :(得分:1)

你们两个都是对的。

如果您有任何计划重用用户控件,那么您应该在该控件中封装数据访问。

但是,如果页面上有多个用户控件,那么访问数据肯定会更有效。

我们在类似情况下经常做的是实现一个混合解决方案:用户控件托管在实现数据检索接口的页面上(它们从页面拉出)或者用户控件实现一个指示其类型的接口他们需要的数据(然后页面将数据推送到用户控件)。