Mvc分頁(yè)組件MvcSimplePager代碼重構(gòu)
Mvc分頁(yè)組件MvcSimplePager代碼重構(gòu)
1.1 Intro
1.2 MvcSimplePager 代碼優(yōu)化
1.3 MvcSimplePager 使用
1.4 End
Intro
MvcSimplePager 是為解決分頁(yè)的而做的一個(gè)通用、擴(kuò)展性良好的輕量級(jí)分頁(yè)擴(kuò)展,可以自定義分頁(yè)時(shí)調(diào)用的方法,自定義分頁(yè)所用的樣式,樣式與代碼分離,維護(hù)方便。
網(wǎng)上有許多分頁(yè)都是查詢(xún)所有數(shù)據(jù)再?gòu)闹胁樵?xún)某一頁(yè)的數(shù)據(jù),但是個(gè)人感覺(jué)數(shù)據(jù)很少時(shí)還可以,如果數(shù)據(jù)比較多這樣根本是不可行的,需要哪一頁(yè)數(shù)據(jù)再查詢(xún)哪一頁(yè)的數(shù)據(jù)才是正確的做法,才能一定程度上提高查詢(xún)的效率。
在網(wǎng)上看了幾個(gè)分頁(yè)組件,感覺(jué)分頁(yè)的 html 代碼和 CSharp 代碼都有不同程度上的耦合,都不是特別滿(mǎn)意, 于是自己封裝了一個(gè)分頁(yè)組件,基本可以實(shí)現(xiàn) html 代碼與 CSharp 代碼的完全分離。
MvcSimplePager 代碼優(yōu)化
MvcSimplePager 是這樣開(kāi)始的 http://www.cnblogs.com/weihanli/p/5913797.html
從開(kāi)始的把分頁(yè)的樣式和翻頁(yè)事件耦合在代碼中到把翻頁(yè)事件分離出來(lái)再到最后把分頁(yè)樣式也分離開(kāi)來(lái),MvcSimplePager 才算開(kāi)始了。
之后是BUG修改和思考代碼的優(yōu)化和重構(gòu)
在開(kāi)始在視圖上展示數(shù)據(jù) 使用 foreach遍歷數(shù)據(jù)時(shí)是需要 Model.Data 才能夠遍歷的,之后優(yōu)化成為只需要Model就可以了,像下面這樣:
@foreach(var item in Model)
V1.0的時(shí)候是沒(méi)有 GroupSize 的,為了使用起來(lái)更方便加入了一個(gè) GroupSize ,幫助更好的實(shí)現(xiàn)更優(yōu)美的分頁(yè),
剛加的時(shí)候不知道當(dāng)前為什么加了一個(gè)驗(yàn)證 GroupSize 不能大于8的限制【捂臉...】,上個(gè)版本已經(jīng)去掉
總之,希望這個(gè)分頁(yè)組件能夠解決大家的分頁(yè)問(wèn)題,也希望能夠它越來(lái)越好用,使用起來(lái)越來(lái)越簡(jiǎn)單,編碼越來(lái)越優(yōu)美。
下面介紹一下具體使用
MvcSimplePager 使用
-
引用 MvcSimplePager 包
在 nuget 包管理器中搜索 “MvcSimplePager”
mvcSimplePager -
自定義 分頁(yè)分部視圖
創(chuàng)建自己項(xiàng)目的分頁(yè)分布視圖,放在 Views目錄下的 Shared 目錄下
pager_location可參考 demo 項(xiàng)目中的 兩個(gè)示例修改為自己想用的Pager:
- PagerPartial
- PagerPartial1 【推薦】
- _PagerPartial 【推薦】
-
后臺(tái)代碼中設(shè)置頁(yè)面數(shù)據(jù)
控制器代碼只需要三行代碼:
- 從數(shù)據(jù)庫(kù)或自己封裝的服務(wù)層獲取所需數(shù)據(jù)
- 根據(jù)查詢(xún)的數(shù)據(jù)生成 IPagerListModel<T> 數(shù)據(jù)
- 將 IPagerListModel<T> 數(shù)據(jù)傳遞到 view
pagerInCode.png -
設(shè)置所需設(shè)置分頁(yè)的頁(yè)面
-
在頁(yè)面上展示數(shù)據(jù)
MvcSimplePager 已經(jīng)對(duì)Model進(jìn)行了處理,在頁(yè)面上展示數(shù)據(jù),可以直接
foreachModelshow-data -
分頁(yè)
MvcSimplePager 定義了為 HtmlHelper定義了一個(gè) Pager的擴(kuò)展方法,用法如下:
pagerInView2.png
-
* 第一個(gè)參數(shù)是 Model 里封裝的一個(gè)分頁(yè)信息
* 第二個(gè)參數(shù)是分頁(yè)事件,默認(rèn)是超鏈接,這里我是調(diào)用的一個(gè)進(jìn)行分頁(yè)的 js 方法
* 第三個(gè)參數(shù)是 分頁(yè)分部視圖的名稱(chēng)
* 第四個(gè)參數(shù)是 分頁(yè)信息展示選項(xiàng),現(xiàn)在有兩種,總是展示和需要翻頁(yè)時(shí)才展示
End
現(xiàn)在已經(jīng)將這個(gè)項(xiàng)目 MvcSimplePager 打包到 Nuget http://www.nuget.org/packages/MvcSimplePager/,你可以在VS中 nuget 包管理器中搜索 MvcSimplePager 進(jìn)行使用 。
自定義 MvcSimplePager 項(xiàng)目和示例代碼:https://github.com/WeihanLi/MvcSimplePager ,你可以根據(jù)需要再進(jìn)行自己的定制。
如果 MvcSimplePager 還有什么不能滿(mǎn)足你的需要,歡迎與我聯(lián)系,期待您的建議和反饋 weihanli@outlook.com




