【问题标题】:Pagination strategy [closed]分页策略[关闭]
【发布时间】:2013-11-09 08:07:05
【问题描述】:

我想在我的视图中添加分页。我查看了 PagedList(Nuget 包),它真的很好。我遇到的问题是它需要从数据库中提取所有记录。如您所见,如果有数百万行,效率不会很高。

是否有任何 Nuget Paging 包不需要您提取所有数据库记录? 我必须编写自己的自定义分页吗?

【问题讨论】:

  • 我不知道有任何 nuget 包,但公平地说,我没有在其中玩弄或研究太多。我可以说的是,在 SQL Server 语句中创建分页并不难。所以实际上,正如您所发现的,最好在数据源级别进行分页,而不是事后。老实说,我不知道为什么那些把所有东西都拉到页面上的开发人员却能逃脱惩罚——恕我直言,他们需要一记耳光!
  • 如果您将IQueryablePagedList 一起使用,它不会提取所有记录。
  • 只是我的意见,但在处理数百万行时,我不会在复杂的分页上浪费时间。我会选择智能过滤和/或搜索优化。老实说:有人在 Google 搜索结果的第 3 页之外翻页了多少次?

标签: asp.net-mvc model-view-controller


【解决方案1】:

快速搜索PagedList github,我实际上看到了作者的这句话,它专门回答了你的问题:

您好,我是 PagedList 库的创建者。如果您将 PagedList 与 IQueryable 一起使用(通过实体框架、Linq2Sql、NHibernate.Linq 等),则库肯定不会加载整个列表以获取另一个页面。

如果由于某种原因您不能使用 IQueryable,则可以使用 StaticPagedList 类来生成自己的 IPagedList 实例,而无需遍历整个集合:

https://github.com/troygoode/pagedlist#example-2-manual-paging

取自:http://forums.asp.net/t/1819810.aspx

【讨论】:

  • 感谢您指出这一点,不知道我是怎么错过的。
【解决方案2】:

根据我的经验,我总是创建自己的自定义分页。创造我自己的总是更好(就灵活性而言)。如果您不想走那条路,那里有一个插件可以帮助您。我没有使用它,但我看过这个例子,它可能对你有用。

Ajax Paging With Bootstrap In MVC 4

我建议下载他们提供的示例项目,应该非常简单。

【讨论】:

  • 感谢您的提示,我在 PagedList 上投入过多,无法切换。
猜你喜欢
  • 2010-09-07
  • 2021-07-02
  • 1970-01-01
  • 2015-05-09
  • 1970-01-01
  • 2018-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多