.NetMvc之MvcPager分页

一、业务描述

        以手写页面控件的方式实现数据列表分页,实现过程繁琐,功能较弱。大牛杨涛为.Net提供了一套免费开源的分页控件,见杨涛的ASP.NET开源世界

二、开发环境

        Visual Studio 2019,Sql Server Express 2018

三、数据模型
        

四、导入实体数据模型

        Visual Studio 2019→创建新项目→ASP.NET Web应用程序(.NET Framework)→MVC→  右键“添加”→“新建项”→“ADO.NET实体数据模型”→“来自数据库的EF设计器”→连接数据库→勾选数据库中的表→勾选“确定所声称对象名称的单复数形式”→添加数据注解

    public partial class Product
    {
        public int id { get; set; }
        [DisplayName("产品名称")]
        [Required]
        public string name { get; set; }
        [DisplayName("生产日期")]
        [Required]
        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
        public System.DateTime pDate { get; set; }
        [DisplayName("生产人")]
        [Required]
        public string pWork { get; set; }
        [DisplayName("价格")]
        [Required]
        [DataType(DataType.Currency)]
        public decimal price { get; set; }
    }

五、后台分页

  1. NuGet安装 MvcPager控件
  2. ProductController,数据库上下文
            //获取数据库上下文     
            private NetDBEntities dbContext = new NetDBEntities();
  3. MvcPage Action
            /// <summary>
            /// MvcPager控件分页
            /// </summary>
            /// <param name="pageIndex">页码</param>
            /// <param name="pageSize">页容量</param>
            /// <returns></returns>
            public ActionResult MvcPage(int pageIndex = 1, int pageSize = 5)
            {
                //后台数据校验
                pageIndex = pageIndex < 1 ? 1 : pageIndex;
                pageSize = pageSize < 1 ? 5 : pageSize;
    
                //定义数据集规则
                var products = dbContext.Products.Select(p => p);
    
                //搜索功能
    
                //排序功能
                products = products.OrderBy(p => p.id);
    
                //用PagedList 封装分页结果
                PagedList<Product> pagedList = products.ToPagedList(pageIndex, pageSize);
                //设置pagedList的总记录数
                pagedList.TotalItemCount = products.Count();
    
                //将用PagedList以强类型方式向页面传值
                return View(pagedList);
            }
六、页面分页
  1. 添加视图 
  2. 页面导入命名空间
    @using Webdiyer.WebControls.Mvc
    @model PagedList<Exp3.Models.Product>
  3. 定义页面变量
    @{
        //序号计数器
        int index = (Model.CurrentPageIndex - 1) * Model.PageSize + 1;
    }
  4. 分页导航控件
    @Html.Pager(Model, 
        new PagerOptions { 
            PageIndexParameterName = "pageIndex", 
            ContainerTagName = "ul", 
            CssClass = "pagination", 
            CurrentPagerItemTemplate = "<li class=\"active\"><a href=\"#\">{0}</a></li>", 
            DisabledPagerItemTemplate = "<li class=\"disabled\"><a>{0}</a></li>", 
            PagerItemTemplate = "<li>{0}</li>", 
            Id = "bootstrappager" 
        })
  5. 为表格添加序号
    <table class="table">
        <tr>
            <th>序号</th>
        </tr>
        @foreach (var item in Model)
        {
    <tr>
        <td>
            @(index++)
        </td>
    </tr>
        }
    </table>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在 ASP.NET MVC 中实现分页方法的步骤如下: 1. 定义一个分页模型类,包含当前页码、每页显示数据条数、总数据条数等属性。 ```C# public class PagingModel { public int CurrentPage { get; set; } // 当前页码 public int PageSize { get; set; } // 每页显示数据条数 public int TotalCount { get; set; } // 总数据条数 } ``` 2. 在控制器中实现分页方法,根据当前页码和每页显示数据条数,从数据库中获取对应的数据。 ```C# public ActionResult Index(int? page) { int pageSize = 10; // 每页显示数据条数 int currentPage = page ?? 1; // 当前页码,默认为第一页 var list = dbContext.Users.OrderBy(u => u.Id) .Skip((currentPage - 1) * pageSize) .Take(pageSize) .ToList(); var totalCount = dbContext.Users.Count(); // 获取总数据条数 var model = new PagingModel { CurrentPage = currentPage, PageSize = pageSize, TotalCount = totalCount }; ViewBag.Model = model; return View(list); } ``` 3. 在视图中使用分页控件,显示分页信息和分页导航链接。 ```C# @model List<User> @foreach(var item in Model) { <tr> ... </tr> } @{ var model = ViewBag.Model as PagingModel; var totalPage = (int)Math.Ceiling(model.TotalCount / (double)model.PageSize); } <div> <span>共 @model.TotalCount 条记录,共 @totalPage 页</span> @if (model.CurrentPage > 1) { @Html.ActionLink("上一页", "Index", new { page = model.CurrentPage - 1 }) } @for (int i = 1; i <= totalPage; i++) { if (i == model.CurrentPage) { <span>@i</span> } else { @Html.ActionLink(i.ToString(), "Index", new { page = i }) } } @if (model.CurrentPage < totalPage) { @Html.ActionLink("下一页", "Index", new { page = model.CurrentPage + 1 }) } </div> ``` 通过以上步骤,我们就可以在 ASP.NET MVC 中实现分页方法了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勇 士 Teacher

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值