一、业务描述
以手写页面控件的方式实现数据列表分页,实现过程繁琐,功能较弱。大牛杨涛为.Net提供了一套免费开源的分页控件,见杨涛的ASP.NET开源世界
二、开发环境
Visual Studio 2019,Sql Server Express 2018
三、数据模型
![](https://i-blog.csdnimg.cn/blog_migrate/c3729fbf6ad7b0b2ab2858d600c0a69d.png)
四、导入实体数据模型
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; }
}
五、后台分页
- NuGet安装 MvcPager控件
- ProductController,数据库上下文
//获取数据库上下文 private NetDBEntities dbContext = new NetDBEntities();
- 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); }
六、页面分页
- 添加视图
- 页面导入命名空间
@using Webdiyer.WebControls.Mvc @model PagedList<Exp3.Models.Product>
- 定义页面变量
@{ //序号计数器 int index = (Model.CurrentPageIndex - 1) * Model.PageSize + 1; }
- 分页导航控件
@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" })
- 为表格添加序号
<table class="table"> <tr> <th>序号</th> </tr> @foreach (var item in Model) { <tr> <td> @(index++) </td> </tr> } </table>