0
A
回答
0
史蒂夫·桑德森介紹了他的書Pro ASP.NET MVC 3的的支持分頁例子,我強烈推薦(雖然直到下一個version發佈應該不會很長)。
他描述了產品控制器(上市的產品頁)爲:
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); }
}
}
然後,您可以使用該尋呼信息按要求在視圖中顯示的信息。
0
看看我PagedList NuGet包在GitHub上:
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}))
相關問題
- 1. 使用模型優先方法時,可以緩存視圖嗎?
- 2. 使用EF4遷移工具和模型優先方法
- 3. 使用動態模型的代碼優先方法
- 4. 使用鏈接列表插入優先級隊列的方法
- 5. 模型優先vs數據優先EF
- 6. 使用大小模板優先於指針類型的方法的方法
- 7. 在CakePHP中使用自定義模型方法分頁
- 8. 實體框架 - 混合模型優先和數據庫優先的方法?
- 9. 使用MEFedMVVM在父視圖/視圖模型中實現視圖模型優先方法
- 10. 是否可以在代碼優先的模型中使用LinqPad
- 11. 使用鏈表的優先級隊列
- 12. 列表到優先隊列
- 13. 帶代碼優先模型的MVC DropDown列表
- 14. ASP MVC代碼優先列表<string>模型屬性
- 15. EF代碼優先 - 在填充模型
- 16. 優先級隊列中的優先級
- 17. 如何在EntityFramework中引用另一個模型列表的模型映射代碼優先
- 18. 斯卡拉 - 方法優先
- 19. C#擴展方法優先
- 20. 實體框架端口從模型優先到代碼優先
- 21. 哪條路?數據庫優先,模型優先,僅限代碼?
- 22. 使用實體框架數據庫優先方法生成模型時的自動模型驗證
- 23. C#優先級列表
- 24. 優先級任務列表
- 25. 如何使用優化方法替換模型陣列中的元素?
- 26. 代碼優先/ EF6中的固定模型/列映射
- 27. 使用優先級隊列的底層容器的自定義類型列表
- 28. 優先上傳優先級,以高優先級使用HTB qdiscs
- 29. 軌道模型驗證優先嗎?
- 30. .NET MVC3優先模型初始化