標籤:style blog http color 使用 strong io 2014
我在格鬥人網 (www.helpqy.com) 中使用了下面的分頁技術。
分頁可以採用troygoode提供的開源包,其開源網站首頁為:https://github.com/TroyGoode/PagedList。具體使用方法如下所示:
1. 通過NuGet下載PagedList.Mvc包,這個包會自動下載另外一個包PagedList,如下所示:
2. 在controller中引入以上兩個包,如下所示:
3. 在controller中的ActionResult函數中按照如下最小結構進行調用:
1 ActionResult ExampleFunction (int ? page)2 {3 int pageSize = 10;4 int pageNumber = page ?? 1;5 6 return View(ExampleList.ToPagedList(pageNumber, pageSize));7 }
其中,page是可以為空白的整型,表示View下一次訪問時應該處於第幾頁,由View通過get方式傳過來,第一次訪問頁面時,page為空白,則pageNumber被賦值為1,表示為第一頁內容。pageSize是每一頁顯示的條目數,pageNumber表示希望顯示的是第幾頁。ToPagedList方法實際上是將ExampleList的所有條目按照pageSize的大小重新組合成頁,然後通過pageNumber來指示顯示那一頁,並僅將這一頁的內容傳遞到View中。
4. 在ExampleFunction對應的View中,也需要加入對包的引用:
同時需要在View頂部加入model引用,將ToPagedList的結果轉換成IPagedList集合:
@model IPagedList<ExampleObject>
5. 在ExampleFunction對應的View中,按照如下的最小結構在頁面底部調用:
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount@Html.PagedListPager(Model, page => Url.Action("ExampleFunction", new { page = page}))
其中,第一行代碼顯示目前處於第幾頁,總共多少頁。第二行代碼自動根據總條目數和每一頁的條目數進行計算,從而顯示頁碼。同時,第二行代碼自動產生每一個頁碼對本View的get訪問連結,當使用者點擊某一頁碼時,實際上是在繼續訪問本View,只不過將page參數,也就是被點擊的頁碼傳遞給了Controller中的ExampleFunction函數,指示希望Controller把某一頁的內容傳遞給View,如此再回過頭去看Controller中Example函數的分析就比較清楚了。Model就是在View頂部所轉化的IPagedList。