您现在的位置:澳门网上真人龙虎 > 菲律宾申博官方网址 > 麻将真人版博彩这让我不禁想起了PagedList

麻将真人版博彩这让我不禁想起了PagedList

2019-08-12 01:06

前几天瞥见博客园上有人写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,能够到下面地点下载:)

(二)、NuGet的益处便是我们不必再举行web.config等各类复杂的配置,以是下面直接编码:

复制代码

复制代码

using PagedList;.....//Controller:PersonControllerpublic ViewResult Index(int? page){    int pageNumber = page ?? 1;    int pageSize = 2;    var persons =http://www.bdqn.cn/news/201308/ 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 =http://www.bdqn.cn/news/201308/ Model.PageCount })}else{@:Next>@Html.Raw("")@:>>}</div>

复制代码

复制代码

  是不是很简简略句单一的ToPageList就会返回一个强类型的PagedList.PagedList<T>对象,并且PagedList.PagedList<T>实现了IPagedList接口,通过对象浏览器我们能够看到IPagedList提供了很多步骤和属性供我们正在View绑按时分运用(比方HasPreviousPage、HasNextPage、PageCount、PageNumer等等),如下图:

麻将真人版博彩这让我不禁想起了PagedList

不过另有两个问题:

第一、看了Controller中的代码,第一感觉是糟了。db.Persons.ToList() 太危险了,ToList时分数据已经执行,幻想一下,若是是百万乃至千万级的数据。。。以是这样不杏祝由于这里没有起到分页的效果。解决思谈,急忙组织其执杏祝

第二、View中绑定分页另有没有更好的步骤,每次这样写是不是太吃力了呢?谜底是注定的,PagedList.Mvc.dll提供了分页导航功能。

应用PagedList优化分页:

复制代码

复制代码

//Controller: PersonControllerpublic ViewResult Index(int? page){    int pageNumber = page ?? 1;    int pageSize = 2;    //Skip之前必须orderbyvar persons = from p in db.Persons                          orderby p.PersonID descending                          select p;     return View(persons.ToPagedList(pageNumber, pageSize));}

复制代码

复制代码

ok,这样就能够正在分页前阻遏盘诘的执行了。可是这里看到还是很虚的。PagedList为我们提供了StaticPagedList<T>类,并且我幼我也相比推许用它来举行分页盘诘:

public StaticPagedList(System.Collections.Generic.IEnumerable<T> subset, int pageNumber, int pageSize, int totalItemCount)