zoukankan      html  css  js  c++  java
  • ASP.NET MVC 简单的分页思想与实现

     首先我们通过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,添加以下代码。

    复制代码
     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>
    复制代码
  • 相关阅读:
    Android Shape画圆,矩形
    Android 图片平铺效果实现的3种方法
    threadid=1: thread exiting with uncaught exception (group=0x40db8930)
    Facebook 调试工具Stetho配置入门
    Exception in MessageQueue callback: handleReceiveCallback
    EditText 双击才能获取点击事件
    2011年中国(大陆)地级以上(含省直辖县)行政区划表
    Android 应用接入广点通统计API 方案
    Android常用工具类封装---SharedPreferencesUtil
    IIS上发布站点后URL重写失效的解决方法
  • 原文地址:https://www.cnblogs.com/lzfsuifeng/p/9106556.html
Copyright © 2011-2022 走看看