首先我们通过VS创建一个空的基于Razor视图引擎的ASP.NET MVC3 Web应用程序,命名为JohnConnor.Web
对创建过程或Razor不太了解的看官,请移步 ASP.NET MVC Razor视图引擎攻略 <传送门> ,这里就不再赘述了。
然后我们需要进行以下几步
1,Models文件夹下,添加Student.cs文件,添加以下代码,为了演示方便这里模拟了一个数据源,实际中的数据源可能来自数据库。
public class Student { public int Id { get; set; } public string Name { get; set; } } public static class Students { public static IEnumerable<Student> data { get { return new List<Student>() { new Student{ Id=0, Name="John"}, new Student{ Id=1, Name="Marry"}, new Student{ Id=2, Name="Andy"}, new Student{ Id=3, Name="Tom"}, new Student{ Id=4, Name="Lydia"}, new Student{ Id=5, Name="Chris"}, new Student{ Id=6, Name="Justin"}, new Student{ Id=7, Name="Susan"} }; } } }
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,添加以下代码。
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>