是否有针对 ASP.NET MVC 的分页解决方案在数据库中进行分页?

发布于 2024-07-26 18:39:46 字数 738 浏览 8 评论 0原文

我通过谷歌搜索发现的大多数 ASP.NET MVC 分页解决方案看起来都以 IEnumerable 集合的形式从数据库表中获取所有行,对 IEnumerable 集合执行一些分页转换,然后将结果返回到视图。 我希望能够在数据库端进行分页,但仍然有一些分页类来进行页码计算和 HTML 生成。 有没有解决方案可以做到这一点? 或者是我一直在看的人这样做,但我没有看到它,因为我看错了?

这是我一直在看的内容:

Most of the ASP.NET MVC paging solutions I have found by googling look like they get all rows from a database table in the form of a IEnumerable collection, perform some paging conversion on the IEnumerable collection, and then return the results to the view. I want to be able to page on the DB side but still have some paging class to do the page number calculations and HTML generation. Is there a solution out there that does this? Or are the ones i've been looking at do this, but i'm not seeing it because i'm looking at them wrong?

here's what i've been looking at:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

待"谢繁草 2024-08-02 18:39:46

请查看 Gu 的 Nerdinner 示例。

var upcomingDinners = dinnerRepository.FindUpcomingDinners();  
var paginatedDinners = upcomingDinners.Skip(10).Take(20).ToList(); 

即使 FindUpcomingDinners() 获取所有即将到来的晚餐,该查询也不会在数据库中执行,直到您在下一行中调用 ToList() 。 那是在您跳过 10 行并仅获得
接下来的 20 行之后。

Look at the Gu's Nerdinner sample.

var upcomingDinners = dinnerRepository.FindUpcomingDinners();  
var paginatedDinners = upcomingDinners.Skip(10).Take(20).ToList(); 

Even though FindUpcomingDinners() gets all the upcoming dinners, the query isn't executed at the database until you call ToList() in the next line. And that is after you Skip 10 rows and only get
the next 20.

甚是思念 2024-08-02 18:39:46

你错了。 PagedList 将在数据库服务器上执行此操作,因为它具有 IQueryable 扩展。

You're wrong. PagedList will do it on the DB server, as it has IQueryable extensions.

偏爱自由 2024-08-02 18:39:46

ScottGu 有一个非常好的多部分博客系列,介绍在 Asp.Net(包括 MVC)中使用 LINQ。 我建议从第 1 部分开始阅读整个系列,但是 第 3 部分 正是您要查找的内容 - 标题为“对查询结果进行分页”的部分专门处理数据库中的分页。

ScottGu has a very nice multi-part blog series on using LINQ in Asp.Net (including MVC). I recommend reading the entire series starting at Part 1, but Part 3 covers exectly what you're looking for -- the section titled "Paging our Query Results" specifically deals with paging in the database.

后eg是否自 2024-08-02 18:39:46

实现采用 @StartPage 和 @PageSize 参数的存储过程不是更有效吗?

这样你只检索实际使用的数据子集,

只有一个名为totalCount或类似的参数,这样你就知道要创建多少个页面链接,每个链接的onclick事件会将页码传递给一个javascript函数 加载带有更多数据的 div 或其他 HTML 元素

将异步

wouldn't it be more efficient to implement a stored procedure that takes @StartPage and @PageSize parameters?

this way you are only retrieving the subset of data that is actually being used

just have an out parameter called totalCount or something similar so that you know how many page links to create and each link onclick event will pass the page number to a javascript function that will asynchronously load the div or other HTML element with more data

easy

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文