2,Models文件夹下,添加PagingHelper.cs文件,添加我们上述分页器类。
public class PagingHelper<T> { //分页数据源 public IEnumerable<T> DataSource { get; private set; } //每页显示记录的数量 public int PageSize { get; private set; } //当前页数 public int PageIndex { get; set; } //分页总页数 public int PageCount { get; private set; } //是否有前一页 public bool HasPrev { get { return PageIndex > 1; } } //是否有下一页 public bool HasNext { get { return PageIndex < PageCount; } } //构造函数 public PagingHelper(int pageSize, IEnumerable<T> dataSource) { this.PageSize = pageSize > 1 ? pageSize : 1; this.DataSource = dataSource; PageCount = (int)Math.Ceiling(dataSource.Count() / (double)pageSize); } //获取当前页数据 public IEnumerable<T> GetPagingData() { return DataSource.Skip((PageIndex - 1) * PageSize).Take(PageSize); } }
3,在Controller文件夹下添加控制器命名为HomeController,添加以下代码。
public class HomeController : Controller { public ActionResult Index(int pageIndex=1) { PagingHelper<Student> StudentPaging = new PagingHelper<Student>(2, Students.data);//初始化分页器 StudentPaging.PageIndex = pageIndex;//指定当前页 return View(StudentPaging);//返回分页器实例到视图 } }
4,在View文件夹下添加Home文件夹,并新增视图文件Index.cshtml,添加以下代码。
@using JohnConnor.Web.Models@model PagingHelper<Student>@{ ViewBag.Title = "Index";}<h2>Index</h2>@foreach (var Data in Model.GetPagingData()){ <p>ID:@Data.Id Name:@Data.Name</p>}<p>@if (Model.HasPrev){ <a href="@Url.Action("Index", "Home", new { pageIndex = Model.PageIndex - 1 })">上一页</a>}else{ <em style="color:Gray">上一页</em>}@if (Model.HasNext){ <a href="@Url.Action("Index", "Home", new { pageIndex = Model.PageIndex + 1 })">下一页</a>}else{ <em style="color:Gray">下一页</em>}</p>
5,在Global.asax中配置路由,我们修改一下默认路由就可以了。
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", // 路由名称 "{controller}/{action}/{pageIndex}", // 带有参数的 URL new { controller = "Home", action = "Index", pageIndex = UrlParameter.Optional } // 参数默认值 ); }
现在保存之后F5运行,就可以看到一个简单的分页程序了。
URL在进行了路由配置之后,也不会再是http://localhost:1234/Home/Index?pageIndex=1
而变成了http://localhost:1234/Home/Index/1 这样的静态URL,更简洁,更美观。