我在 (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. Discoverer Table

    http://www.cnblogs.com/fandychen/p/3182826.html EUL4_BAS Table gives list of Business Areas EUL4_OBJ ...

  2. [翻译]NUnit---Property and Random Attributes(十四)

    小记:由于工作琐碎,没得心情翻译而且也在看<CLR vis C#>,所以断更了差不多5个月,现在继续翻译,保证会翻译完成,不会虎头蛇尾. 另:NUnit已经更新到2.6.3版本,虽然正在开 ...

  3. [.net]基元线程同步构造

    /* 基元线程同步构造 用户模式构造: 易变构造(Volatile Construct) 互锁构造(Interlocked Construct):自旋锁(Spinlock) 乐观锁(Optimisti ...

  4. Day 9 作业题(完成)

    # 练习题# 1.整理函数相关知识点,画思维导图,写博客 # 2.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者.'''def func1(argv): f ...

  5. OI字符串 简单学习笔记

    持续更新qwq KMP 其实是MP啦qwq 就是先自己匹配自己得到状态图,然后再在上面进行模式串的匹配. nxt数组返回的是以该节点结尾的,最长的,在前面出现过的,不相交的,字符串的最靠右的,末位位置 ...

  6. Xcode的多种Build Configuration

    一: 建多个Configuration的目的. 多套域名打包. 1 开发时的域名. 2 内测时的域名. 3 公测时的域名. 4 企业版的域名. 5 APP Store的域名. 通过注释的方式,容易出错 ...

  7. 5.python内置函数详解

    内置函数 声明,转载至这位大哥,感谢之至 http://blog.csdn.net/oaa608868/article/details/53506188 关于分类 数学运算(7个) 类型转换(24个) ...

  8. JavaScript基础事件(6)

    day53 参考:https://www.cnblogs.com/liwenzhou/p/8011504.html#autoid-2-3-8 事件 HTML 4.0 的新特性之一是有能力使 HTML ...

  9. Android逆向系列文章— Android基础逆向(6)

    本文作者:HAI_ 0×00 前言 不知所以然,请看 Android逆向-Android基础逆向(1) Android逆向-Android基础逆向(2) Android逆向-Android基础逆向(2 ...

  10. Elasticsearch-搜索推荐

    对于es中搜索推荐的功能的实现: 1.使用match_phrase_prefix来实现search-time搜索推荐,原理根match_phrase类似,唯一的区别是把最后一个term作为前缀去搜索, ...