ASP.NET MVC利用PagedList分页(一)
来源:互联网 发布:每天编程一小时网站 编辑:程序博客网 时间:2024/05/29 12:11
前几天看见博客园上有人写ASP.NET MVC的分页思想,这让我不禁想起了PagedList。PagedList是NuGet上提供的一个分页的类库,能对任何IEnumerable<T>进行分页,而且非常简单好用。从NuGet上,可以获取两个DLL:PagedList.dll和PagedList.Mvc.dll。PagedList.dll提供分页的核心操作,PagedList.Mvc.dll是一个辅助类库,在创建分页的UI时候提供简单、可扩展的创建方法。不过PagedList.dll可以用于MVC2及其以上,但是PagedList .Mvc.dll只能用于MVC3(及其以上)。
使用PagedList:
(一)、安装PagedList:引用-->Add Library Package Reference--->OnLine All--->搜索PagedList,点击Install安装。(如果没有安装Nuget,可以到下面地址下载:http://www.nuget.org/)
(二)、NuGet的好处就是我们不用再进行web.config等各种复杂的配置,所以下面直接编码:
.....
//Controller:PersonController
public ViewResult Index(int? page)
{
int pageNumber = page ?? 1;
int pageSize = 2;
var persons = db.Persons.ToList();
return View(persons.ToPagedList(pageNumber, pageSize));
}
......
//View:Views/Person/Index
@model PagedList.PagedList<XXX.Person>......
<div>
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber)
of @Model.PageCount
@if (Model.HasPreviousPage)
{
@Html.ActionLink("<<", "Index", new { Page = 1 })
@Html.Raw(" ")
@Html.ActionLink("< Prve", "Index", new { Page = Model.PageNumber - 1 })
}
else
{
@:<<
@Html.Raw(" ")
@:< Prev
}
@Html.Raw(" ")
@if (Model.HasNextPage)
{
@Html.ActionLink("Next >", "Index", new { Page = Model.PageNumber + 1 })
@Html.Raw(" ")
@Html.ActionLink(">>", "Index", new { Page = Model.PageCount })
}
else
{
@:Next>
@Html.Raw(" ")
@:>>
}
</div>
是不是很简单一句简单的ToPageList就会返回一个强类型的PagedList.PagedList<T>对象,而且PagedList.PagedList<T>实现了IPagedList接口,通过对象浏览器我们可以看到IPagedList提供了很多方法和属性供我们在View绑定时候使用(例如HasPreviousPage、HasNextPage、PageCount、PageNumer等等),如下图:
不过还有两个问题:
第一、看了Controller中的代码,第一感觉是糟了。db.Persons.ToList() 太危险了,ToList时候数据已经执行,幻想一下,如果是百万甚至千万级的数据。。。所以这样不行。因为这里没有起到分页的效果。解决思路,赶紧组织其执行。
第二、View中绑定分页还有没有更好的方法,每次这样写是不是太费劲了呢?答案是肯定的,PagedList.Mvc.dll提供了分页导航功能。
利用PagedList优化分页:
public ViewResult Index(int? page)
{
int pageNumber = page ?? 1;
int pageSize = 2;
//Skip之前必须orderby
var persons = from p<span bdsharebuttonbox"="" style="margin: 0px; padding: 0px;">
- ASP.NET MVC利用PagedList分页(一)
- asp.net mvc pagedlist pagedlist.mvc分页
- ASP.NET MVC利用PagedList分页(二)PagedList+Ajax+JsRender
- asp.net mvc中分页--利用PagedList实现
- Asp.net Mvc使用PagedList分页
- Asp.net Mvc使用PagedList分页
- ASP.NET MVC 4使用PagedList.Mvc分页
- ASP.NET MVC 4使用PagedList.Mvc分页
- .net mvc 分页,pagedlist,mvcpager
- .net mvc4 利用 PagedList分页
- ASP.NET MVC5 PagedList分页示例
- asp.net MVC: PagedList + View Model
- mvc.net分页查询案例——PagedList
- 关于MVC4使用PagedList.mvc分页
- 关于MVC4使用PagedList.mvc分页
- asp.net mvc 分页
- ASP.NET MVC分页
- asp.net MVC分页
- html简单的跑马灯效果
- WM_NCHITTEST消息
- BestCoder Round #85 (hdu5804,hdu5805,hdu5806,hdu5807)
- Java中的API常用类
- 常用的RGB值和颜色对照表
- ASP.NET MVC利用PagedList分页(一)
- IDA*,迭代加深搜索(编辑书稿,uva 11212)
- Kconfig
- 51Nod-1098-最小方差
- 面试总结之--数据库
- html自己动手写无限轮播效果
- findViewById已经过时了
- springmvc基于servlet3.0特性记录
- WM_ACTIVATE消息