ASP.NET:使用Flurl制作可復用的分頁組件


使用ASP.NET MVC查詢時,一直使用MvcPaging組件,雖然需要自定義MvcPaging.Pager才能達到我想要的效果,但在沒有較好的URL庫時,還是這么用。分頁的邏輯本來就不復雜,更重要的是最近發現了Flurl這個開源庫,所以采用Flurl制作一個DIY的分頁組件,核心是PagingModel文件,算法可能不是最優,但包含了主要的邏輯和實現關鍵點。由於在查詢方面,我使用以下實踐:

1.使用ViewModel封裝查詢參數

2.使用ViewModel作為View的Model類型

3.采用表單的GET方式提交查詢到Action

4.直接設置Url的參數提交查詢到Action

因此自制的分頁組件也在上述環境下應用。本來計算將查詢和分頁寫在一起,但是為了便於獨立演示分頁還是將分頁部分獨立出來。

1.首先使用String擴展方法包裝Flurl中的方法,便於以后更換其他庫。

2.自定義繼承自IHtmlString的對象PagingModel,這樣可以不依賴MVC的程序庫。

同時實現了IvalidatableObject接口,檢查PageSize異常。一些默認的參數可以配置成從配置文件(在ASP.NET MVC 系列:文件上傳的Demo有相關的代碼)或配置數據庫中讀取。

3.在ASP.NET MVC Razor中直接使用或使用HtmlHelper擴展方法包裝調用。

可以對類庫再次保證,引用ASP.NET MVC,這樣可以直接返回SelectList對象。

Action:

View:

4.可以不使用繼承自PagingModel的方式,直接在View中new 一個PagingModel方式:

5.效果演示:

(1)靠近首頁和末頁的鏈接數不足時,會向中間補全。博客園的導航就只處理了靠近首頁部分,沒有正確處理末頁部分。

(2)默認PageIndex和PageSize不會添加參數。Url中參數為空時會自動過濾掉。

 更新:支持調用自定義Razor模板

代碼已經上傳到gitosc:http://git.oschina.net/myshare/AspNetPaging

組件已經上傳到nuget:https://www.nuget.org/packages/AspNetPaging/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM