答えて

0

スティーブサンダーソンは、(次の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); } 
    } 
} 

0

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})) 
関連する問題