用pagedlist在项目中做分页已N次了,今天再次用实例来实现一个带查询功能的分页例子。
1、在view代码:
@using PagedList.Mvc @model BGZS.Models.UserPagedList
登录名 | 真实姓名 | 学校 | 年级 | 班级 | 操作 |
---|---|---|---|---|---|
@Html.DisplayFor(modelItem => item.name) | @item.realname | @item.school | @item.stugrade | @item.stuclass | 重置密码 | 删除 |
@Html.PagedListPager(Model.list, page => Url.Action("index", new { page,realname= Model.curUser.realname }), PagedListRenderOptions.Classic)
} 上面注意在查询部分的from表单, name属性中指明后台接收的变量。最下方的是分页代码,注意突出显示部分是在分页时传值的变量名realname= Model.curUser.realname, Model.curUser是后台指定的用户User类的当前用户,这个可以在第二步中具体查看,realname与表单中的一致,保证后台能接收到。
2、MVC控制器
private OnlineTestEntities db = new OnlineTestEntities(); private const int pagesize = 15; public ActionResult Index(User userinfo, int page = 1) { var list = db.Users.ToList(); if (!string.IsNullOrEmpty(userinfo.realname)) { list = list.Where(x => x.realname.Contains(userinfo.realname)).ToList(); } UserPagedList mylist = new UserPagedList() { list = list.OrderByDescending(x => x.id).ToPagedList(page, pagesize), curUser = userinfo }; return View(mylist); }
注意红色代码, User中有一属性正是第一步中的realname属性,这是查询条件。UserPagedList 类是把分页集合包装的一个类,是自己写的,如下 :
3、 UserPagedList类:
public class UserPagedList { public User curUser { get; set; } public PagedList.IPagedListlist { get; set; } }
好了,实现完毕。这种实现现在是我经常用的方法。