文章系统图片系统下载系统个人求职企业招聘房产系统展会系统供求系统产品系统商城系统自定义系统后台一览
解决方案
建站知识
ASP.NET MVC 简单的分页思想与实现
来源:网络作者:网络

2,Models文件夹下,添加PagingHelper.cs文件,添加我们上述分页器类。

分页器Code
 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,添加以下代码。

控制器Code
 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,添加以下代码。

视图Code
@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,更简洁,更美观。