MVC中分頁的實現

來源:互聯網
上載者:User

標籤: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。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.