ASP.NET MVC- 使用PageList.Mvc分頁
阿新 • • 發佈:2018-04-01
多說 pan stp using enum BE 官網 color AR
ASP.NET MVC中進行分頁的方式有多種,在NuGet上有提供使用PagedList、PagedList.Mvc進行分頁。
1. 通過NuGet引用PagedList.Mvc
在安裝引用PagedList.Mvc的同時會安裝引用PagedList。
1.看一下Controller頁面的代碼,最後就簡單的一句,將List數據ToPagedList返回過去就可以了。原來愛怎麽分頁可以怎麽分頁。
1 //引用 2 using PagedList; 3 namespace MvcApplication1.Controllers 4 { 5 public class SplitPageController : Controller6 { 7 // 8 // GET: /SplitPage/ 9 10 public ActionResult Index(int page = 1) 11 { 12 //取數據 13 List<Package.Model.Message> lists = new List<Package.Model.Message>(); 14 MessageDal message = new MessageDal(); 15 DataSet ds = message.GetList("1=1 "); 16 17 //轉成List 18 for (int i = 0; i < ds.Tables[0].Rows.Count; i++) 19 { 20 lists.Add(new Package.Model.Message() 21 { 22 gName = ds.Tables[0].Rows[i]["gName"].ToString(), 23 gContent = ds.Tables[0].Rows[i]["gContent"].ToString() 24 }); 25 } 26 27 //將數據分頁後返回頁面(這裏可以在取數據的時候先分頁後,再使用ToPagedList實現分頁 28 return View( lists.ToPagedList(page, 2)); 29 } 30 31 } 32 }
返回後在HTML頁面的顯示
1 @model PagedList.IPagedList<Package.Model.Message> 2 @using PagedList.Mvc; 3 4 @{ 5 Layout = null; 6 } 7 8 <!DOCTYPE html> 9 10 <html> 11 <head> 12 <meta name="viewport" content="width=device-width" /> 13 <title>Index</title> 14 </head> 15 <body> 16 <table> 17 <tr> 18 <th> 19 gname 20 </th> 21 <th> 22 gContent 23 </th> 24 <th> 25 26 </th> 27 </tr> 28 @foreach (var item in Model) 29 { 30 <tr> 31 <td> 32 @Html.DisplayFor(modelItem => item.gName) 33 </td> 34 <td> 35 @Html.DisplayFor(modelItem => item.gContent) 36 </td> 37 <td></td> 38 </tr> 39 } 40 </table> 41 @Html.PagedListPager(Model, page => Url.Action("Index", new { page })) 42 </body> 43 </html>
使用ViewBag返回分頁數據,由於MODEL只有一個,如果按官網給的例子,那麽一個頁面只能有一個分頁了,但是VIEWBAG點出來的卻可以多個。
看一下顯示,不多說了,直接上代碼
1 using PagedList; 2 3 namespace MvcApplication2.Controllers 4 { 5 public class HomeController : Controller 6 { 7 // 8 // GET: /Home/ 9 10 public ActionResult Index(int page = 1) 11 { 12 //取數據 13 List<Package.Model.Message> lists = new List<Package.Model.Message>(); 14 MessageDal message = new MessageDal(); 15 DataSet ds = message.GetList(" 1=1 "); 16 17 //轉成List 18 for (int i = 0; i < ds.Tables[0].Rows.Count; i++) 19 { 20 lists.Add(new Package.Model.Message() 21 { 22 gName = ds.Tables[0].Rows[i]["gName"].ToString(), 23 gContent = ds.Tables[0].Rows[i]["gContent"].ToString() 24 }); 25 } 26 27 //將數據分頁後返回頁面(這裏可以在取數據的時候先分頁後,再使用ToPagedList實現分頁 28 ViewBag.MyPageList = lists.ToPagedList(page, 2); 29 return View( ); 30 } 31 32 } 33 }
VIEW視圖
1 @using PagedList.Mvc; 2 3 @{ 4 PagedList.IPagedList<Package.Model.Message> myPageList = (PagedList.IPagedList<Package.Model.Message>)ViewBag.MyPageList; 5 Layout = null; 6 } 7 8 <!DOCTYPE html> 9 10 <html> 11 <head> 12 <meta name="viewport" content="width=device-width" /> 13 <link href="~/Content/PagedList.css" rel="stylesheet" /> 14 <title>Index</title> 15 </head> 16 <body> 17 <table> 18 <tr> 19 <th> 20 gname 21 </th> 22 <th> 23 gContent 24 </th> 25 <th> 26 27 </th> 28 </tr> 29 @foreach (var item in myPageList) 30 { 31 <tr> 32 <td> 33 @Html.DisplayFor(modelItem => item.gName) 34 </td> 35 <td> 36 @Html.DisplayFor(modelItem => item.gContent) 37 </td> 38 <td></td> 39 </tr> 40 } 41 </table> 42 每頁 @myPageList.PageSize 條記錄,共 @myPageList.PageCount 頁,當前第 @myPageList.PageNumber 頁 43 @Html.PagedListPager(myPageList, page => Url.Action("Index", new { page })) 44 </body> 45 </html>
ASP.NET MVC- 使用PageList.Mvc分頁