我在 (www.helpqy.com) 中使用了下面的分页技术。

分页可以采用troygoode提供的开源包,其开源网站主页为:https://github.com/TroyGoode/PagedList。具体使用方法如下所示:

1. 通过NuGet下载PagedList.Mvc包,这个包会自动下载另外一个包PagedList,如下所示:

2. 在controller中引入以上两个包,如下所示:

3. 在controller中的ActionResult函数中按照如下最小结构进行调用:

 ActionResult ExampleFunction (int ? page)
{
int pageSize = ;
int pageNumber = page ?? ; return View(ExampleList.ToPagedList(pageNumber, pageSize));
}

其中,page是可以为空的整型,表示View下一次访问时应该处于第几页,由View通过get方式传过来,第一次访问页面时,page为空,则pageNumber被赋值为1,表示为第一页内容。pageSize是每一页显示的条目数,pageNumber表示希望显示的是第几页。ToPagedList方法实际上是将ExampleList的所有条目按照pageSize的大小重新组合成页,然后通过pageNumber来指示显示那一页,并仅将这一页的内容传递到View中。

4. 在ExampleFunction对应的View中,也需要加入对包的引用:

同时需要在View顶部加入model引用,将ToPagedList的结果转换成IPagedList集合:

@model IPagedList<ExampleObject>

5. 在ExampleFunction对应的View中,按照如下的最小结构在页面底部调用:

Page @(Model.PageCount < Model.PageNumber ?  : Model.PageNumber) of @Model.PageCount
@Html.PagedListPager(Model, page => Url.Action("ExampleFunction", new { page = page}))

其中,第一行代码显示目前处于第几页,总共多少页。第二行代码自动根据总条目数和每一页的条目数进行计算,从而显示页码。同时,第二行代码自动生成每一个页码对本View的get访问链接,当用户点击某一页码时,实际上是在继续访问本View,只不过将page参数,也就是被点击的页码传递给了Controller中的ExampleFunction函数,指示希望Controller把某一页的内容传递给View,如此再回过头去看Controller中Example函数的分析就比较清楚了。Model就是在View顶部所转化的IPagedList。

MVC中分页的实现的更多相关文章

  1. MVC中,查询以异步呈现,分页不用异步的解决方案

    MVC中,查询以异步呈现,分页不用异步的解决方案 这种需求,用一个ASPX页面和一个ASCX分部视图就可以解决了,ASPX提供对ASCX的引用,ASCX显示列表信息,ASPX主页面提供查询功能 < ...

  2. FineUIMvc随笔(6)对比WebForms和MVC中表格的数据库分页

    声明:FineUIMvc(基础版)是免费软件,本系列文章适用于基础版. 通过对比WebForms和MVC中表格数据库分页代码的不同,可以对 MVC 中的数据流转有更加深入的了解. WebForms 中 ...

  3. datagrid在MVC中的运用01-基本属性并实现分页

    本文体验jQuery EasyUI的datagrid在MVC中的应用.主要涉及到: ※ datagrid的基本属性和方法 ※ datagrid分页在前后台的实现 最终效果: 与视图显示对应的view ...

  4. MVC中的自定义控件——分页

    上一篇是个简单例子,这篇借分页写个升级版的例子. 不想拼html代码,因为不好修改,那写一个PartialView. @model System.Web.Mvc.PagerModel @if (Mod ...

  5. 基于存储过程的MVC开源分页控件--LYB.NET.SPPager

    摘要 现在基于ASP.NET MVC的分页控件我想大家都不陌生了,百度一下一大箩筐.其中有不少精品,陕北吴旗娃杨涛大哥做的分页控件MVCPager(http://www.webdiyer.com/)算 ...

  6. MVC中实现加载更多

    需要实现的功能: 数据太多想初次加载部分数据,在底部加上“加载更多”按钮 点击后加载第二页数据(从数据库只取指定页数据)后接在已有数据后面(类似于android中的下拉加载更多) 每次加载时显示“正在 ...

  7. 在 ASP.NET MVC 中充分利用 WebGrid (microsoft 官方示例)

    在 ASP.NET MVC 中充分利用 WebGrid https://msdn.microsoft.com/zh-cn/magazine/hh288075.aspx Stuart Leeks 下载代 ...

  8. Asp.Net MVC中使用ACE模板之Jqgrid

    第一次看到ACE模板,有种感动,有种相见恨晚的感觉,于是迅速来研究.它本身是基于bootstrap和jqueryui,但更nice,整合之后为后台开发节省了大量时间. 发现虽然不是完美,整体效果还是不 ...

  9. MVC5+EF6 入门完整教程11--细说MVC中仓储模式的应用

    摘要: 第一阶段1~10篇已经覆盖了MVC开发必要的基本知识. 第二阶段11-20篇将会侧重于专题的讲解,一篇文章解决一个实际问题. 根据园友的反馈, 本篇文章将会先对呼声最高的仓储模式进行讲解. 文 ...

随机推荐

  1. Eclipse ADT 代码注释模版

    具体怎么用: 将下面的内容拷贝出来保存为XML文件,进入,Eclipse :Window --> Java --> Code Style --> Code Templates-> ...

  2. Python:Selenium+Webdriver安装

    本人小白一枚,今天在使用selenium+webdriver的时候遇到了一个小问题: WebDriverException: 'chromedriver' executable needs to be ...

  3. asp .net api 日志

    方法1:继承IExceptionLogger ExceptionLogger是框架提供的表示未处理的异常记录器的抽象类 public class RecordExceptionLogger : Exc ...

  4. ARM 编译工具keil 和 IAR 命令行编译和下载

    目的 不管是Keil还是IAR对代码补全,高亮等编辑功能支持的不是很好,虽然现在的Keil 5.25对界面的支持好了很多,但是很多人还是青睐于第三方的编辑器,命令行的编译方式可以让我们在使用第三方编辑 ...

  5. 虚幻4随笔6 Object和序列化

    诚如之前所说,虚幻4主要的一些特性都是由UObject穿针引线在一起的,想把虚幻玩到比较深的程度,UObject是迟早要面对.回避不得的问题,所以,准备在其它主题之前,先把UObject好好弄一下.U ...

  6. 第二章 ConcurrentHashMap源码解析

    注:在看这篇文章之前,如果对HashMap的层不清楚的话,建议先去看看HashMap源码解析. http://www.cnblogs.com/java-zhao/p/5106189.html 1.对于 ...

  7. AOP面向切面的基石——动态代理(一)

    其实动态代理在Java里不是什么新技术了,早在java 1.2之后便通过 java.lang.reflect.InvocationHandler 加入了动态代理机制. 下面例子中,LancerEvol ...

  8. Day 19 re 模块 random模块,正则表达式

    https://www.cnblogs.com/Eva-J/p/7228075.html#_label10 findall search match方法 和 search相比 match自带 ^ se ...

  9. 压缩VBox虚拟机空间的方法

      虚拟机使用久了就会发现虚拟文件越来越大,删除虚拟机中的文件之后物理主机的磁盘空间并不会相应减少,所以实际占用的空间并没有虚拟文件大小那么大,因此我们很有必要进行压缩.不过VirtualBox貌似没 ...

  10. webpack快速入门——CSS分离与图片路径处理

    1.在终端安装extract-text-webpack-plugin 2.引入插件 const extractTextPlugin = require("extract-text-webpa ...