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

本文关键字:控件 数据库 调用 用户 aspx | 更新日期: 2023-09-27 18:36:50

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

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

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

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

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

顺便说一句,没有什么可以

阻止您将强类型对象传递给用户控件,就像在 MVC 中一样:

在 MyControl.ascx.cs 中:

public MyControlModel Model {get; set;}

然后,只需在控件数据绑定之前设置调用页Model即可。