ASP.NET MVC3使用PagedList实现分页导航
分页导航功能在Web应用中再常见不过了,本文介绍了近期项目开发过程中如何利用PagedList库实现数据条目的分页导航功能,项目其实很简单,就是实现一个简单的内容管理系统,具备增删改查的功能,采用了ASP.NET MVC3技术。
使用NuGet包管理器,具体做法:右键项目的References => Manage NuGet Packages => 搜索PagedList安装。这里需要下载两个DLL,分别是PagedList.dll和PagedList.Mvc.dll,其中PagedList适用MVC2框架及以上,它提供了简单易用的分页功能;PagedList.Mvc.dll适用于MVC3及以上,它提供了方便使用的导航功能,省去了开发人员在页面中写的大量的前端代码,有效地减少了代码量。
初次使用PagedList进行分页操作时,没有进行任何优化,简单地使用了.ToPagedList()方法,代码如下所示:
constint pageSize =15;publicActionResultIndex(int page =1){var softwares = db.Softwares.ToList();returnView(softwares.ToPagedList(page, pageSize));}
上面的代码片段很容易理解,从数据库中取出所有数据,然后进行分页,这样做的一大弊端就是如果数据量很大的话,这种操作是十分耗时的,实践也证明了这一点,所以必须对其性能进行优化。每一次访问Index页面的时候,并不需要读取全部数据进行分页,应采取的策略是访问第几页的数据,就将此页的数据读取出来,具体代码如下所示:
softwares =(from s in db.Softwaresorderby s.SWNamedescending// order排序可以加快数据访问速度select s).Skip((page -1)* pageSize).Take(pageSize).ToList();......int totalCount = db.Softwares.Count();var softwaresAsIPagedList =newStaticPagedList<SoftwareModel>(softwares, page, pageSize, totalCount);returnView(softwaresAsIPagedList);
以上代码完成了数据分页功能且优化了数据访问性能,下面来说明分页后的导航功能,需要借助PagedList.Mvc.dll提供的相关函数,前端Index页面的代码片段如下所示:
@modelPagedList.StaticPagedList<XXX.Models.SoftwareModel>@usingPagedList@usingPagedList.Mvc......@Html.PagedListPager((IPagedList)Model, page =>Url.Action("Index",new{ page = page }))
oK,刷新页面看看吧!
本博文参考了两篇非常不错的博文,相信对大家也会有帮助