0

まず、Nuget パッケージから PagedList をインストールしてから、以下のコードを StoreManager Controller にデプロイしました。

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcMusicStore.Models;
using PagedList;

namespace MvcMusicStore.Controllers
{ 
    public class StoreManagerController : Controller
    {
        private MusicStoreEntities db = new MusicStoreEntities();

    //
    // GET: /StoreManager/

    public ViewResult Index(int? page)
    {

        int pageSize = 10;
        int pageNumber = (page ?? 1);
        var albums = db.Albums.Include(a => a.Genre).Include(a => a.Artist).OrderBy(f => f.AlbumId).Skip(pageNumber * pageSize).Take(pageSize);
        return View(albums.ToPagedList(pageNumber, pageSize));
    }

そして以下のコードをインデックスビューに

@model PagedList.IPagedList<MvcMusicStore.Models.Album>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create") 
</p>
<table>
    <tr>
        <th>
            Genre
        </th>
        <th>
            Artist
        </th>
        <th>
            Title
        </th>
        <th>
            Price
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Genre.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Artist.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Title)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Price)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.AlbumId }) |
            @Html.ActionLink("Details", "Details", new { id=item.AlbumId }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.AlbumId })
        </td>
    </tr>
}

</table>
<div>
    Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber)
    of @Model.PageCount

    @if (Model.HasPreviousPage)
    {
        @Html.ActionLink("<<", "Index", new { page = 1, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter  })
        @Html.Raw(" ");
        @Html.ActionLink("< Prev", "Index", new { page = Model.PageNumber - 1, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter  })
    }
    else
    {
        @:<<
        @Html.Raw(" ");
        @:< Prev
    }

    @if (Model.HasNextPage)
    {
        @Html.ActionLink("Next >", "Index", new { page = Model.PageNumber + 1, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter  })
        @Html.Raw(" ");
        @Html.ActionLink(">>", "Index", new { page = Model.PageCount, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter  })
    }
    else
    {
        @:Next >
        @Html.Raw(" ")
        @:>>
    }
</div>

ただし、ご覧のとおり、ページ内で「次へ」または「前へ」は有効になっていません

ここに画像の説明を入力

4

2 に答える 2

0

両方の時間に入るように見えます。elseつまり、Model.HasPreviousPageとの両方Model.HasNextPageが false です。

これ以上アイテムを持っていない可能性はありますか?

于 2013-08-01T21:48:17.907 に答える
0

それを見つけた。この部分を削除しただけです

.Skip(pageNumber * pageSize).Take(pageSize);

コントローラーの

于 2013-08-02T07:56:42.667 に答える