ここの例に従っています: http://nerddinnerbook.s3.amazonaws.com/Part8.htmで、ページャーをアプリに追加しようとしています。
私のコントローラーには次のものがあります:
// GET: /Offer/
// GET: /Offer/Page/2
public ActionResult Index(int? page)
{
const int pageSize = 10;
var items = db.Customers.OrderByDescending(x => x.OfferCreatedOn);
var paginatedItems = new PaginatedList<Customer>(items, page ?? 0, pageSize);
return View(paginatedItems);
}
このヘルパーを含むヘルパーフォルダーがあります:
public class PaginatedList<T> : List<T>
{
public int PageIndex { get; private set; }
public int PageSize { get; private set; }
public int TotalCount { get; private set; }
public int TotalPages { get; private set; }
public PaginatedList(IQueryable<T> source, int pageIndex, int pageSize)
{
PageIndex = pageIndex;
PageSize = pageSize;
TotalCount = source.Count();
TotalPages = (int)Math.Ceiling(TotalCount / (double)PageSize);
this.AddRange(source.Skip(PageIndex * PageSize).Take(PageSize));
}
public bool HasPreviousPage
{
get
{
return (PageIndex > 0);
}
}
public bool HasNextPage
{
get
{
return (PageIndex + 1 < TotalPages);
}
}
}
私が今立ち往生しているのは、ビューの一番上に何を置くかです。
次を入力すると、次の@model PaginatedList<FGBS.Models.Customer>
エラーメッセージが表示されます。
PaginatedList には、「HasPreviousPage」(ヘルパーにある) の定義と、Customer モデルにある他の項目 (ビューにも渡す必要があります) の定義が含まれていません。
ビューの最初の行を次のように変更する@model FGBS.Helpers.PaginatedList<Customer>
と、次の行が強調表示されて、型または名前空間 'Customer' が見つかりません:
public class _Page_Views_offer_index_cshtml : System.Web.Mvc.WebViewPage>
洞察をありがとう、
マーク