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(及其以上)。
1、新建项目。
2、配置model。参考这里:mvc model 配置
3、安装PagedList。
引入NuGet程序包: 工具》库程序包管理器》NuGet程序包。
联机搜索PagedList.Mvc,安装。(如果没有安装Nuget,可以到下面地址下载:http://www.nuget.org/)
NuGet的好处就是我们不用再进行web.config等各种复杂的配置,所以下面直接编码:
4、新建一个Controllers。
... using MvcPageTest.Models; using PagedList; namespace MvcPageTest.Controllers { public class HomeController : Controller { private TestEntities db = new TestEntities(); // GET: /Home/ public ActionResult Index(int page = 1) { ViewData["page"] = page; var test = NewsPage(page); return View(test); } #region PagedList.IPagedList NewsPage(int page) /// <summary> /// /// </summary> /// <param name="page">页码</param> /// <returns></returns> public PagedList.IPagedList NewsPage(int page) { int pageSize = 10; var test = (from t in db.tests orderby t.id select t).ToPagedList((int)page, pageSize); return test; } #endregion } }
5、新建一个View。
@model PagedList.IPagedList<MvcPageTest.Models.test> @using PagedList.Mvc; @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <link href="/Content/PagedList.css" rel="stylesheet" type="text/css" /> <title>Mvc分页例子</title> <style type="text/css"> body{ font-size: 12px; font-family: "微软雅黑"; color: #555; position: relative; background: #fff;} a{ text-decoration: none; color: #555;} #tbList{ border: 1px solid #0094ff; width: 800px; margin: 10px auto; border-collapse: collapse;} #tbList th, td{ border: 1px solid #0094ff; padding: 5px; } </style> </head> <body> <div style="text-align: center;"> <h1>Mvc分页例子</h1> <table id="tbList"> <tbody> @if (Model.Count() != 0) { <tr> <th style="width: 60px;">id</th> <th style="width: 150px;">pnamec</th> <th style="width: 200px;">pnamee</th> <th style="width: 150px;">ccodes</th> <th style="width: 80px;">pcodes</th> </tr> foreach (var a in Model) { <tr style="text-align: center;"> <td>@a.id</td> <td>@a.pnamec</td> <td>@a.pnamee</td> <td>@a.ccodes</td> <td>@a.pcodes</td> </tr> } <tr> <td colspan="5"> <div class="pager"> @if (Model != null) { <span style="height: 20px; line-height: 20px;">共 @Model.TotalItemCount.ToString() 条记录,当前第 @ViewData["page"] 页/共 @Model.PageCount 页 </span> @Html.PagedListPager(Model, page => Url.Action("Index", new { page }), new PagedListRenderOptions() { LinkToFirstPageFormat = "首页", LinkToNextPageFormat = "下一页", LinkToPreviousPageFormat = "上一页", LinkToLastPageFormat = "末页", DisplayItemSliceAndTotal = false, MaximumPageNumbersToDisplay = 3 }) } </div> </td> </tr> } </tbody> </table> </div> </body> </html>
一句简单的ToPageList就会返回一个强类型的PagedList.PagedList<T>对象,而且PagedList.PagedList<T>实现了IPagedList接口,通过对象浏览器我们可以看到IPagedList提供了很多方法和属性供我们在View绑定时候使用(例如HasPreviousPage、HasNextPage、PageCount、PageNumer等等),如下图:
在View中,PagedList还为我们提供了分页导航的样式。上面的<link href="/Content/PagedList.css" rel="stylesheet" type="text/css" />就是引入分页导航的样式。你安装了PagedList.Mvc会自动的放在你的Content中,这既是NuGet的好处了。当然你也可以自定义Css和引用其他的Css。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
例子下载:download