如何在aspx页面上使用多个用户控件而不在多个控件中进行相同的数据库调用?

时间:2013-10-24 04:39:04

标签: c# asp.net user-controls webforms

我目前正处于一个项目中,每个.aspx页面由多个用户控件(.ascx文件)组成。在某些情况下,单个页面的多个用户控件正在调用数据库以获取相同的数据。两个用户控件可能会为同一客户对象调用数据库,以执行其各自环境所需的任务。毕竟说完了之后,一些网页最终会使相同的数据库调用10次或更多次,因为每个用户控件都需要数据来处理它正在做的事情。这看起来效率不高。

使用ASP.NET Webforms处理这种情况的最佳做法是什么?我们已经尝试过缓存数据库调用,但它只是感觉不是问题的可靠解决方案,尽管它有助于提高性能。使用MVC时,我可以传入一个包含特定页面所需的所有数据的强类型对象,并且只对数据进行一次查询。如何使用WebForms实现类似的功能?

1 个答案:

答案 0 :(得分:3)

最佳实践与任何OO编程相同:不要重复自己。

在这种情况下,不是让用户控制查询数据库来获取数据,而是通过属性将数据传递给控件。您甚至可以使用数据绑定,就像“真正的”服务器控件一样。

顺便说一句,没有什么可以阻止你将强类型对象传递给用户控件,就像你在MVC中一样:

在MyControl.ascx.cs中:

public MyControlModel Model {get; set;}

然后在控制数据绑定之前将调用页面设置为Model