PagedList
を使用して、検索支払い結果ページのページングを表示しています。私は各ページに5回の支払いしか表示しません。私がテストしている検索基準は15レコードを返します。私はページ番号1,2,3を持つ最初のページに5つのレコードしかないと考えています。一番下のページ番号が期待どおりに表示されますが、すべてのページに15個のレコードが表示されます。私は、以下に示すようなコードをデバッグし、StaticPagedList
機能が代わり5.私のコントローラのアクションコードの15件のレコードを返していることが判明している:ASP.Net MVC PagedListが正しく機能しない
public ViewResult ViewPayment(int? billerId, int? billAccount, int? page)
{
var pageIndex = (page ?? 1) - 1;
var pageSize = 5;
List<Payment> paymentList = new List<Payment>();
paymentList = _paymentBusiness.GetPayments(billerId, billAccount);
var paymentsAsIPagedList = new StaticPagedList<Payment>(paymentList, pageIndex + 1, pageSize, paymentList.Count);
ViewBag.OnePageOfPayments = paymentsAsIPagedList;
return View(paymentList);
}
私は何も間違っている場合は私に知らせてください。
あなたは5つのレコードだけを正しく返しますが、 'ViewBag.OnePageOfPayments'にそれを割り当て、' return View(paymentList);を使って15個のレコードすべてをビューに返す 'StaticPagedList'を使用しています'ビューを返す(paymentsAsIPagedList);')。しかし、 'payList.Count'を使うと非常に効率が悪いです。' GetPayments() 'メソッドは' List 'で' IQueryable 'ではないので、効率的なページングの目的を破ってコレクション全体をメモリにロードしました –
'IQueryable'を返すメソッドを使い、' .Count() 'を使って要素の総数を取得する必要があります。 –
おススメのおかげでありがとう!私はそれを効率的にするためにコメントごとに修正するつもりです。 –