1. 程式人生 > >ASP.NET MVC- 使用PageList.Mvc分頁

ASP.NET MVC- 使用PageList.Mvc分頁

多說 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 : Controller
6 { 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分頁