ASP.NET MVC 分頁MvcPager

來源:互聯網
上載者:User

標籤:原始碼   開發人員   而且   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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.