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

本文关键字:中的 ASP NET 数据绑定 UserControl | 更新日期: 2023-09-27 18:20:39

在页面上执行数据访问操作,然后用检索到的数据填充每个用户控件的属性更好吗。

--或--

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

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

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

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

请说明为什么一个会比另一个更好。

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

在大多数情况下,第一个选项更好。

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

其目的之一是可重用性。如果它与数据源硬链接,则会减少这种情况。它应该适用于任何类型的DAL,根本不应该干扰它们。

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

你们两个都是对的。

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

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

在这种情况下,我们经常做的是实现一个混合解决方案:要么用户控件托管在实现数据检索接口的页面上(他们从页面中提取),要么用户控件实现一个指示他们需要的数据类型的接口(然后页面将数据推送到用户控件)。