ページ付きリストを使用してビュー内のデータをページングしたいと思います。以前は Web グリッドを使用してこれを行いましたが、モデルの最初のアプローチを使用してこれを行うのは難しいと感じています。
ありがとう
ページ付きリストを使用してビュー内のデータをページングしたいと思います。以前は Web グリッドを使用してこれを行いましたが、モデルの最初のアプローチを使用してこれを行うのは難しいと感じています。
ありがとう
github で私の PagedList nuget パッケージを確認してください。
https://github.com/troygoode/pagedlist
これにより、次のようなコードを記述できます。
MyController.cs
public class MyController : Controller{
public object MyRoute(){
var pagedProducts = ProductsRepo.All().ToPagedList();
return View(pagedProducts);
}
}
MyRoute.cshtml
<ul>
@foreach(var product in ViewModel){
<li>@product.Name</li>
}
</ul>
@Html.PagedListPager(ViewModel, page=> Url.Action("MyRoute", {page = page}))
Steve Sanderson は、彼の著書Pro ASP.NET MVC 3でページネーション サポートの例を説明しています。
彼は、製品コントローラ (製品の一覧ページ) を次のように説明しています。
public class ProductController : Controller {
public int PageSize = 4; //This could be retrieved from the database
private IProductRepository repository;
public ProductController(IProductRepository repoParam) {
repository = repoParam;
}
public ViewResult List(int page = 1) {
ProductsListViewModel viewModel = new ProductsListViewModel {
Products = repository.Products
.OrderBy(p => p.ProductID)
.Skip((page - 1) * PageSize)
.Take(PageSize),
PagingInfo = new PagingInfo {
CurrentPage = page,
ItemsPerPage = PageSize,
TotalItems = repository.Products.Count()
}
};
return View(viewModel);
}
アクションへのクエリは、次の形式になります。
http://localhost:23081/Product/List?page=2
(または必要なルーティング)。
このビュー モデルは次のようになります。
public class ProductsListViewModel {
public IEnumerable<Product> Products { get; set; }
public PagingInfo PagingInfo { get; set; }
}
PagingInfo モデルは次のようになります。
public class PagingInfo {
public int TotalItems { get; set; }
public int ItemsPerPage { get; set; }
public int CurrentPage { get; set; }
public int TotalPages {
get { return (int)Math.Ceiling((decimal)TotalItems / ItemsPerPage); }
}
}
このページング情報を使用して、必要に応じてビューに情報を表示できます。