0

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

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

4

1 回答 1

3

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

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

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

在 MyControl.ascx.cs 中:

public MyControlModel Model {get; set;}

Model然后在控件数据绑定之前设置调用页面。

于 2013-10-24T04:40:35.690 回答