.net mvc4 PagedList分页

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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。