PagedList.Mvc is one of many good paging and sorting packages for ASP.NET MVC, in the below simple example I'm gonna implement it for content (posts) of a blog post, install the PagedList.MVC via Nuget and take a look at this code. This is an action which returns blog posts:
public ActionResult List(int? page) { var posts = _blogService.GetAllBlogPosts(); var pageNumber = page ?? 1; var onePageOfPosts = posts.ToPagedList(pageNumber, 10); ViewBag.OnePageOfPosts = onePageOfPosts; return View(posts); }
I just defined the OnePageOfPosts ViewBag and onePageOfPosts. now in the view, you have to add a line of code:
@using PagedList @using PagedList.Mvc; @model IEnumerable<BlogViewModel> @{ ViewBag.Title = "List"; } @foreach (var item in Model) { @Html.ActionLink(item.Title, "Post", "Blog", new { postId = item.PostId, urlSlug = item.UrlSlug }, null) @Html.DisplayTextFor(blog => item.Body) } @Html.PagedListPager((IPagedList)ViewBag.OnePageOfPosts, page => Url.Action("List", new { page }) )
if you run this piece of code, you should have something like this in the output:
<< First < Previous 1 2 3 4 5 … Next > Last >>