之前使用X.PagedList分页,他的思路是先取出全部数据,再分页,这样数据量太大的时候体验感很不好的
我们需要的是看多少数据就取多少数据,这样也可以缓解服务器压力
首先引入依赖PagedList.Core
然后在控制器里面代码如下:
using PagedList.Core;最后在页面UI里面写上
var pagesize = 20;
int totalItems = new WorkServer().GetCount(skey); //要分页的总记录数
List<Work> ws = new WorkServer().Get(page-1, pagesize, skey);
IPagedList<Work> pagedList = new StaticPagedList<Work>(ws, page, pagesize, totalItems);
return View(pagedList);
//引用按以上分页即可,但是没有样式,需要样式的,可以参考以下css
@{var PagedListRenderOptions = PageListOptions.GetPagedListRenderOptions; }
@model PagedList.Core.StaticPagedList<Work>
options:分页的样式
asp-controller:控制器名
asp-action:Action名
asp-all-route-data:不加该项时 =》会默认添加Page参数
如若需要额外传参数
通过字典传Dictionary,
类型为Dictionary<string, string>
var RouteData = new Dictionary<string, string>();
RouteData.Add("parameterTest1", "参数一");
RouteData.Add("parameterTest2", "参数二");
<div class="layui-col-xs12" style="text-align:center;">
<pager list="@Model" options="@PagedListRenderOptions" asp-controller="Work" asp-action="Index" />
</div>
.pagination {
    display: inline-block;
    padding-left: 0;
    margin: 20px 0;
    border-radius: 4px;
}
    .pagination > li {
        display: inline;
    }
        .pagination > li > a,
        .pagination > li > span {
            position: relative;
            float: left;
            padding: 6px 12px;
            margin-left: -1px;
            line-height: 1.428571429;
            text-decoration: none;
            background-color: #ffffff;
            border: 1px solid #dddddd;
        }
        .pagination > li:first-child > a,
        .pagination > li:first-child > span {
            margin-left: 0;
            border-bottom-left-radius: 4px;
            border-top-left-radius: 4px;
        }
        .pagination > li:last-child > a,
        .pagination > li:last-child > span {
            border-top-right-radius: 4px;
            border-bottom-right-radius: 4px;
        }
        .pagination > li > a:hover,
        .pagination > li > span:hover,
        .pagination > li > a:focus,
        .pagination > li > span:focus {
            background-color: #eeeeee;
        }
    .pagination > .active > a,
    .pagination > .active > span,
    .pagination > .active > a:hover,
    .pagination > .active > span:hover,
    .pagination > .active > a:focus,
    .pagination > .active > span:focus {
        z-index: 2;
        color: #ffffff;
        cursor: default;
        background-color: #428bca;
        border-color: #428bca;
    }
    .pagination > .disabled > span,
    .pagination > .disabled > a,
    .pagination > .disabled > a:hover,
    .pagination > .disabled > a:focus {
        color: #999999;
        cursor: not-allowed;
        background-color: #ffffff;
        border-color: #dddddd;
    }
.pagination-lg > li > a,
.pagination-lg > li > span {
    padding: 10px 16px;
    font-size: 18px;
}
.pagination-lg > li:first-child > a,
.pagination-lg > li:first-child > span {
    border-bottom-left-radius: 6px;
    border-top-left-radius: 6px;
}
.pagination-lg > li:last-child > a,
.pagination-lg > li:last-child > span {
    border-top-right-radius: 6px;
    border-bottom-right-radius: 6px;
}
.pagination-sm > li > a,
.pagination-sm > li > span {
    padding: 5px 10px;
    font-size: 12px;
}
.pagination-sm > li:first-child > a,
.pagination-sm > li:first-child > span {
    border-bottom-left-radius: 3px;
    border-top-left-radius: 3px;
}
.pagination-sm > li:last-child > a,
.pagination-sm > li:last-child > span {
    border-top-right-radius: 3px;
    border-bottom-right-radius: 3px;
}
.pager {
    padding-left: 0;
    margin: 20px 0;
    text-align: center;
    list-style: none;
}
    .pager:before,
    .pager:after {
        display: table;
        content: " ";
    }
    .pager:after {
        clear: both;
    }
    .pager:before,
    .pager:after {
        display: table;
        content: " ";
    }
    .pager:after {
        clear: both;
    }
    .pager li {
        display: inline;
    }
        .pager li > a,
        .pager li > span {
            display: inline-block;
            padding: 5px 14px;
            background-color: #ffffff;
            border: 1px solid #dddddd;
            border-radius: 15px;
        }
            .pager li > a:hover,
            .pager li > a:focus {
                text-decoration: none;
                background-color: #eeeeee;
            }
    .pager .next > a,
    .pager .next > span {
        float: right;
    }
    .pager .previous > a,
    .pager .previous > span {
        float: left;
    }
    .pager .disabled > a,
    .pager .disabled > a:hover,
    .pager .disabled > a:focus,
    .pager .disabled > span {
        color: #999999;
        cursor: not-allowed;
        background-color: #ffffff;
    } 
 
                
- 本文标题: DotNetCore使用PagedList.Core进行分页
- 文章分类:【.NET/Web】
- 非特殊说明,本文版权归【胡同里的砖头】个人博客 所有,转载请注明出处.