Skip to content

Note

不挑戰記憶力的技術筆記

Menu
Menu

[ASP.NET MVC] 用PagedList做分頁

Posted on 2014 年 4 月 22 日 by febr

PagedList

於Visual Studio可透過NuGet中搜尋「PagedList」安裝:NuGet-PagedList.MVC,

安裝後在專案的「參考」中會出現「PagedList」「PagedList.Mvc」。

 

Controller

必須注意的一點是,取得資料前一定要先做排序處理(OrderBy),否則分頁處理會出現錯誤,

為提升效率,不必對Query結果做ToList(),最後使用ToPagedList()

......
using PagedList;
namespace testProj.Controllers
{
        public class MyDataListController : Controller
        {
                private MyEntities db = new MyEntities();

                private int pageSize = 5;

                public ActionResult Index(int page = 1)
                {
                        int currentPage = page < 1 ? 1 : page;
                        var myDatas = db.MyDataList.OrderBy(x => x.MyDataSeq);
                        var result = myDatas.ToPagedList(currentPage, pageSize);

                        return View(result);
                }
......

 

View

  • ~/Views/Web.Config:加入Namespace的使用,就不用在要分頁的View中個別加入using了
  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, ......
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Optimization"/>
        <add namespace="System.Web.Routing" />
        <add namespace="PagedList" />
        <add namespace="PagedList.Mvc" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>
  • ~/Views/MyDataList/Index.cshtml:將原本使用的Model型別更改
@model IEnumerable<testProj.Models.MyDataList>

改為

@model IPagedList<testProj.Models.MyDataList>
  • 相對的,在table中的th因為Model型別的修改會出現錯誤,也必須更改
        
            @Html.DisplayNameFor(model => model.FirstOrDefault().MyDataSeq)
        
  • 加入~/Content/PagedList.css(@section styles是自己在_Layout.cshtml有先加入的section)

 

  • 設置PagedListPager Html Helper
@Html.PagedListPager(Model, page => Url.Action("Index", new { page }))

完工。

近期文章

  • [AWS] S3 Object Initiate restore (復原回 Standard)
  • [Windows] 使用者快速登出的方法 Logout/ Logoff/Sign Out from Windows User Account
  • [Windows] Windows 11 安裝Server管理工具Install RSAT(Remote Server Administrator Tools)
  • Chrome出現:你的連線不是私人連線 Your connection is not private
  • [C#] 取得 Request URL 的方法

近期留言

    彙整

    分類

    • Ajax
    • Android
    • ASP
    • ASP.NET MVC
    • Azure
    • C#
    • Cisco
    • CSS
    • Delphi
    • Developer Tools
    • Framework
    • FreeBSD
    • Git
    • HTML5
    • javascript
    • jQuery
    • Juniper
    • Linux
    • Mac
    • PHP
    • Python
    • Server&OS
    • Software
    • SQL server
    • Sublime Text
    • Ubuntu
    • Visual Studio
    • Vmware
    • Web Design
    • Web Development
    • Windows
    • WordPress
    • 未分類
    • 未分類

    彙整

    分類

    • Ajax
    • Android
    • ASP
    • ASP.NET MVC
    • Azure
    • C#
    • Cisco
    • CSS
    • Delphi
    • Developer Tools
    • Framework
    • FreeBSD
    • Git
    • HTML5
    • javascript
    • jQuery
    • Juniper
    • Linux
    • Mac
    • PHP
    • Python
    • Server&OS
    • Software
    • SQL server
    • Sublime Text
    • Ubuntu
    • Visual Studio
    • Vmware
    • Web Design
    • Web Development
    • Windows
    • WordPress
    • 未分類
    • 未分類

    其他操作

    • 登入
    • 訂閱網站內容的資訊提供
    • 訂閱留言的資訊提供
    • WordPress.org 台灣繁體中文
    © 2025 Note | Powered by Superbs Personal Blog theme