使用ASP.NET MVC查詢時,一直使用MvcPaging組件,雖然須要自定義MvcPaging.Pager才能達到我想要的效果,但在沒有較好的URL庫時,仍是這麼用。分頁的邏輯原本就不復雜,更重要的是最近發現了Flurl這個開源庫,因此採用Flurl製做一個DIY的分頁組件,核心是PagingModel文件,算法可能不是最優,但包含了主要的邏輯和實現關鍵點。因爲在查詢方面,我使用如下實踐:html
1.使用ViewModel封裝查詢參數git
2.使用ViewModel做爲View的Model類型github
3.採用表單的GET方式提交查詢到Action算法
4.直接設置Url的參數提交查詢到Action數據庫
所以自制的分頁組件也在上述環境下應用。原本計算將查詢和分頁寫在一塊兒,可是爲了便於獨立演示分頁仍是將分頁部分獨立出來。post
同時實現了IvalidatableObject接口,檢查PageSize異常。一些默認的參數能夠配置成從配置文件(在ASP.NET MVC 系列:文件上傳的Demo有相關的代碼)或配置數據庫中讀取。url
能夠對類庫再次保證,引用ASP.NET MVC,這樣能夠直接返回SelectList對象。spa
Action:.net
View:3d
(1)靠近首頁和末頁的連接數不足時,會向中間補全。博客園的導航就只處理了靠近首頁部分,沒有正確處理末頁部分。
(2)默認PageIndex和PageSize不會添加參數。Url中參數爲空時會自動過濾掉。
更新:支持調用自定義Razor模板
代碼已經上傳到gitosc:http://git.oschina.net/myshare/AspNetPaging
組件已經上傳到nuget:https://www.nuget.org/packages/AspNetPaging/