私はページリストを使用して私のビューにデータをページしたいと思います。以前はウェブグリッドを使用していましたが、モデルの最初のアプローチを使用してこれを行うのは難しいと思っています。モデルの最初のアプローチでページリストを使用しますか?
おかげ
私はページリストを使用して私のビューにデータをページしたいと思います。以前はウェブグリッドを使用していましたが、モデルの最初のアプローチを使用してこれを行うのは難しいと思っています。モデルの最初のアプローチでページリストを使用しますか?
おかげ
スティーブサンダーソンは、(次のversionが解放されるまで、それは長くすべきではないが)、私は非常にお勧め彼の本Pro ASP.NET MVC 3で改ページのサポートの例を説明します。
彼のように(製品のページをリスト)製品コントローラについて説明します。
http://localhost:23081/Product/List?page=2
(または任意のルーティングあなたが必要):アクションへのクエリは、その後形態であってもよい
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);
}
。
このビューモデルは次のようになります。
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); }
}
}
。
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}))