ASP.NET:使用Flurl製做可複用的分頁組件

使用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

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

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

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

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

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

Action:.net

View:3d

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/

相關文章
相關標籤/搜索