標籤:原始碼 開發人員 而且 set orderby 最佳化 ret 實現 targe
他連續12年獲得微軟MPV稱號,幾年前,他寫的ASP.NET分頁控制項,被很多.NET開發人員使用,現在他又寫了名為MvcPager的分頁擴充,並免費開源,支援MVC通用分頁,與EF完美結合,支援AJAX分頁,簡單靈活,提供多個示範案例,是迄今為止最好的MVC分頁方式,推薦各位ASP.NET MVC開發人員使用。
分頁是每個項目必須面對的技術點,不好的分頁不但體驗不好,而且會影響系統的整體效能,MvcPager作為一款非常不錯的通用分頁擴充,使用方式簡單靈活,首先來看看MvcPager分頁擴充提供的功能:
1、支援MVC路由分頁功能,URL更優雅,搜尋引擎最佳化更好。
2、支援輸入指定的頁號,對頁號進行驗證,並跳轉。
3、相容任何瀏覽器,支援jQuery和Ajax非同步分頁,提供友好的使用者體驗。
4、支援預存程序和EF直接查詢分頁。
5、自訂分頁樣式,您也可以使用bootstrap等第三方分頁樣式。
首先我們點擊這裡下載開原始碼,下載完後解壓壓縮包,其中MvcPager是分頁擴充,Demo和DemoCN分別是作者提供的英文和中文示範執行個體,Tests是單元測試項目。直接開啟MvcPager解決方案,即可看到以上4個項目。MvcPager作為一個單獨的項目存在,你可以自行編譯並在目標項目中引用它,也可以直接搬代碼到你的項目中,總之,免費開源的,你想怎麼玩就怎麼玩,下面我們就使用MvcPager來一個簡單的Ajax分頁。
1、通過EF或者CodeFirst建立實體類型,假如我們這裡EF產生的產品實體如下所示:
public class Product{ public int ID { get; set; } public string Name { get; set; } public double Price { get; set; } public DateTime CreateDate { get; set; }}
2、為了展示產品列表,我們需要建立1個部分視圖,用於呈現產品列表,部分視圖用於響應AJAX非同步請求,並產生可供前端AJAX使用的HTML代碼,使用部分視圖,很好利用了MVC本身的特性,以後還可以複用這個列表。
部分頁_ProductList.cshtml視圖頁視圖代碼:
@model PagedList<Webdiyer.MvcPagerDemo.Controllers.Product><table> <tr> <th> @Html.DisplayNameFor(model => model.ID) </th> <th> @Html.DisplayNameFor(model => model.Name) </th> <th> @Html.DisplayNameFor(model => model.Price) </th> <th> @Html.DisplayNameFor(model => model.CreateDate) </th> </tr> @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.ID) </td> <td> @Html.DisplayFor(modelItem => item.Name) </td> <td> @Html.DisplayFor(modelItem => item.Price) </td> <td> @Html.DisplayFor(modelItem => item.CreateDate) </td> </tr> }</table>
3、建立一個MVC控制器,在控制器中寫一個Action方法,如下所示。
public class ProdectController : Controller{ public ActionResult Protects(int pageIndex = 1) { var model = dbContext.Products.OrderByDescending(a => a.CreateDate).ToPagedList(pageIndex, 11); if (Request.IsAjaxRequest()) { return PartialView("_ProdectList", model); } return View(model); }}
其中ToPagedList方法是MvcPager擴充的EF分頁方法,pageIndex表示頁號,這裡11表示每頁顯示條數,IsAjaxRequest用於判斷當前請求是頁面請求還是AJAX分頁請求,如果是頁面請求,表示第一次響應,需要返回產品視圖,如果是Ajax請求,則返回上面建立的_ProductList.cshtml視圖。
4、根據上面的Action我們建立一個視圖,用於展示產品列表,代碼如下:
@model PagedList<Webdiyer.MvcPagerDemo.Controllers.Product><!DOCTYPE html><html><head> <title>零度編程</title> <link href="bootstrap.min.css" rel="stylesheet" /></head><body> @Html.Partial("_ProductList", Model) @Html.RegisterMvcPagerScriptResource()</body></html>
當控制器中的Product方法執行時,會首次跳轉到這個視圖,並預設載入第1頁資料,RegisterMvcPagerScriptResource用於向頁面註冊AJAX分頁控制項,為了美化分頁樣式,我們引用了使用bootstrap樣式檔案。
至此,我們的分頁功能就完成了,我們直接預覽後,效果如上所示,一個完整的AJAX分頁功能就實現了,當然MvcPager提供的分頁方式很多,完全可滿足不同情境的不同需求,更多內容,可參閱開源包中的示範執行個體。
ASP.NET MVC 分頁MvcPager