(8)为列表结果分页
2015-10-22 11:02
169 查看
问题
你有一个很庞大列表形式的结果,它加载的时间很长。或者你在这个很长的列表中不能很轻松的找到你的结果。把结果划分成多个页面将会减少页面载入的时间并且帮你更快的找到你想要的结果,特别是结果已经被排序的情况下。
解决方案
使用PagedList.MVC穿梭于各个记录列表页。
讨论
为一个应用程序分页你需要通过NuGet Library安装一个新的DLL“pagedList.MVC”。这将生成一个比完整的列表更好的分页列表。选择工具->Library Package Manager->Add Library Package Reference.在左边选择online 按钮。在搜索框里输入pagedList然后按下图安装PagedList.MVC:
![](http://img.ddvip.com/2012/0301/201203010422514310.jpg)
一旦pagedlist安装完成,创建分页的代码将被添加成为一个partial view。这允许以后为结果分页时可以重用这个partial view。由于分页的过程并没有真正包含许多动态变量,所以这是一个完美的机会去重用这个HTML在每一个结果列表页而带来甚微的影响,同时保持外观一致。
作为开始,展开Views 文件夹。右击 Shared文件,选择->添加->View。命名为_Paging,确定选着“Create as partial view”点击添加。在新创建的view中添加如下代码:
双击代码全选
这个View 创建了4个link。首页,前一页,下一页和末页。我说有4个link是因为如果前边没有可用的页面。那么前一页和首页的链接就是不可用的。每个link 传递2个变量到Index()action。页码和当前排序的规则列。当前排序的规则列可以确保我分页之后用户也不会丢失他选择的排序规则。
接下来,我们要在Book/Index 这个view上做一些更改:
双击代码全选
上边的例子包含了对View的3个改变。第一,更新了model的type成强类型PagedList.IPagedList。
第二,_Paging partial view被引用了2次。一次在table上。一次在table下。这样可以方便用户点击。
最后,要更新BookController。Index()这个 action 要被更新去接收一个新的参数:page。并且用一个 paged List 去替换原来的返回值 list。并且,在sort order 块中。添加一个新的 ViewBag变量 设置当前的sort order。代码如下:
(译者:我修改了原书中的代码,因为这段代码中有bug。ToChangedList接收的第一个参数不能为0,但是默认action传入的page是1.这样会引发异常):
双击代码全选
如果你想进一步扩展局部视图(_Paging)重用在其他列表的结果,你只需要确保为每个列表设置相同的ViewBag。在这种情况下,列表结果 不在像这样Index() action中。你可以更新Html.ActionLink调用另一个ViewBag变量定义的动作,使得它可能动态的使用。
你有一个很庞大列表形式的结果,它加载的时间很长。或者你在这个很长的列表中不能很轻松的找到你的结果。把结果划分成多个页面将会减少页面载入的时间并且帮你更快的找到你想要的结果,特别是结果已经被排序的情况下。
解决方案
使用PagedList.MVC穿梭于各个记录列表页。
讨论
为一个应用程序分页你需要通过NuGet Library安装一个新的DLL“pagedList.MVC”。这将生成一个比完整的列表更好的分页列表。选择工具->Library Package Manager->Add Library Package Reference.在左边选择online 按钮。在搜索框里输入pagedList然后按下图安装PagedList.MVC:
![](http://img.ddvip.com/2012/0301/201203010422514310.jpg)
一旦pagedlist安装完成,创建分页的代码将被添加成为一个partial view。这允许以后为结果分页时可以重用这个partial view。由于分页的过程并没有真正包含许多动态变量,所以这是一个完美的机会去重用这个HTML在每一个结果列表页而带来甚微的影响,同时保持外观一致。
作为开始,展开Views 文件夹。右击 Shared文件,选择->添加->View。命名为_Paging,确定选着“Create as partial view”点击添加。在新创建的view中添加如下代码:
接下来,我们要在Book/Index 这个view上做一些更改:
第二,_Paging partial view被引用了2次。一次在table上。一次在table下。这样可以方便用户点击。
最后,要更新BookController。Index()这个 action 要被更新去接收一个新的参数:page。并且用一个 paged List 去替换原来的返回值 list。并且,在sort order 块中。添加一个新的 ViewBag变量 设置当前的sort order。代码如下:
(译者:我修改了原书中的代码,因为这段代码中有bug。ToChangedList接收的第一个参数不能为0,但是默认action传入的page是1.这样会引发异常):
相关文章推荐
- (7)为结果排序
- (6)找回忘记的密码
- Node学习记录
- 配额不足问题
- 黑马程序员-java基础(八)-图形用户界面GUI
- 计算机采用 补码 存储数据
- IBM-AIX系统使用基本命令
- 批量删除redis key
- JS判断设备是否是移动端自动跳转到对应页面的简单代码
- (3)验证用户的输入
- (5)发送欢迎邮件
- (4)实现多语言
- (2)通过脚手架自动生成controller和view ----代码先行/数据库先行
- (转)scanf()总结
- (转)CSS浮动(float,clear)通俗讲解
- MvcSiteMapProvider配置使用
- 如何确定域在结构中的字节偏移量,怎样用结构成员名访问对应成员?
- error MSB6006: “LC.exe”已退出
- iOS 蓝牙编程
- 前端<a>标签打开新的选项卡