using System.Collections.Generic;
namespace PaginationExample
public class IndexViewModel
public IEnumerable<string> Items { get; set; }
public Pager Pager { get; set; }
public Pager(int totalItems, int? page, int pageSize, int pagerLength)
var totalPages = (int)Math.Ceiling((decimal)totalItems / (decimal)pageSize);
var currentPage = page != null ? (int)page : 1;
var isEven = pagerLength % 2 == 0;
startPage = currentPage - (int)(pagerLength / 2) + 1;
endPage = currentPage + (int)(pagerLength / 2);
startPage = currentPage - (int)Math.Floor((decimal)pagerLength / 2);
endPage = currentPage + (int)Math.Ceiling((decimal)pagerLength / 2) - 1;
if (totalPages >= pagerLength)
if (endPage >= totalPages)
startPage = totalPages - pagerLength + 1;
CurrentPage = currentPage;
public int TotalItems { get; private set; }
public int CurrentPage { get; private set; }
public int PageSize { get; private set; }
public int TotalPages { get; private set; }
public int StartPage { get; private set; }
public int EndPage { get; private set; }