首页 > 解决方案 > 在页面级别实现 Asp.NET core 2.2 Sessionstate 或 tempdata 等效项

问题描述

我在 Asp.NET core 2.2 中有一个报告,该报告当前访问了每页数据的数据库。我的目标是从数据库中获取大量数据子集(或整个数据集),然后在屏幕上呈现时对其进行逻辑分页。

我需要我的控制器记住在 cshtml 页面期间获取的内容,如果我使用会话状态或临时数据(指示记住列表),那么我会在用户导航离开后将结果集保留在内存中。

有没有我可以使用的构造,也许像一个老式的析构函数?

标签: c#asp.net-core

解决方案


有没有我可以使用的构造,也许像一个老式的析构函数?

不,那里没有。这个假定的析构函数应该仅在用户在连续访问几次您希望调用析构函数的页面后导航到另一个页面时触发。没有内置机制会以这种方式运行。

我使用会话状态或临时数据(指示记住列表),然后在用户导航离开后,我将面对保留在内存中的结果集

是的,这就是会话的工作方式。根据结果​​集的大小,您最终可能会在服务器内存中保留太多数据。

我的目标是从数据库中获取大量数据子集(或整个数据集),然后对其进行逻辑分页

通常,这种要求的最佳方案是使用数据库的分页功能,在单个请求时从数据库中获取特定页面。

这样您就不必将大型子集存储在中间件服务器的内存中。相反,从数据库中检索单个页面,提供给客户端并在请求完成时立即删除。


推荐阅读