LoginSignup
3
9

More than 5 years have passed since last update.

PagedListを使ってみる

Last updated at Posted at 2016-12-19

ASP.NET MVCで定番のpager。使い方のメモ。

下記、完成イメージ。

pagelist

前提

  • testdbにmembersテーブルがある(name,emailカラムが存在)
  • とりあえずスキャフォールドでControllerとViewが出来ている状態

準備

NuGetでPagedList.Mvcをインストールしておく。

実装

今回はIndexにおけるList表示にPagerを仕込みたいと思います。
標準で生成されているIndexアクションを下記のように変更します。

Controller

+using PagedList;

(省略)

// GET: Members
-public ActionResult Index()
-{
-    return View(db.Members.ToList());
-}

+public ActionResult Index(int? page)
{
+    int pageNumber = page ?? 1;
+    int pageSize = 5;

+    var query = db.Members.ToList();

+    return View(query.ToPagedList(pageNumber,pageSize));
}

特に難しいところは何もありません。

View

つづいてView。PagedList.Mvcをusingします。
モデルをIEnumerable<>からPagedLinstIPagedList<>に変更します。

なお、model.name等の指定が使えなくなりますので、model.FirstOrDefault().name等に変更します。

-@model IEnumerable<pagedlist01.Models.Members>
+@using PagedList.Mvc
+@model PagedList.IPagedList<pagedlist01.Models.Members>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
    <tr>
        <th>
+            @Html.DisplayNameFor(model => model.FirstOrDefault().name)
        </th>
        <th>
+            @Html.DisplayNameFor(model => model.FirstOrDefault().email)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.email)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.id }) |
            @Html.ActionLink("Details", "Details", new { id=item.id }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.id })
        </td>
    </tr>
}

</table>

<div>
+    Page: @Model.PageNumber / @Model.PageCount
</div>

<div>
+    @Html.PagedListPager(Model, page => Url.Action("Index", new { page, pageSize = Model.PageSize }))
</div>

後は必要なフォーマットをHTMLヘルパーで指定します。以上。

参考

3
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
9