老生常谈: Asp.net Mvc3 加载cshtml文件自定义分页+ 查询
上次写了篇:老生常谈:Asp.net Mvc 3 加载cshtml文件创建自定义分页
遇到的问题: 单纯的数据列表,分页ok,但是加上其它外界因素,常见的如 查询,排序,分页如何跟它们结合呢?
分页如何和查询,排序结合?
我的思路,查询、排序为主,分页为次。
1.查询条件改变,页码重新加载,当前页面从1重新开始
2. 查询后生成的页码保存查询对应的参数和值,从而模拟查询+分页的效果。
拓展分页控件,使其可以包含其它参数。
常见的传参方式: Url传值,Form传值
常见的数据格式: Text 和 json
更改原有设计:
DataType 参数类型 text/json
PageModel 页码类包含:
PageIndex 页码索引
PageText 页码显示文本
Pager 分页控件类
PagerTemp 分页控件加载cshtml或者ascx名称
PagerID 分页控件ID
PagerShow 是否显示分页
PageSize 每页显示的记录数目
CurPage 当前页的索引
PageNum 最少显示的页码数目[偏移量]
Totalpage 总页数
TotalSize 总记录数据
List<PageModel> 页码列表
ControllerName 控制器名称
ActionName 动作名称
DataType 数据格式
Dictionary<string,string> 参数列表
PageData 数据
PageHelper 分页控件生成类,拓展HtmlHelper用于创建分页控件
public static MvcHtmlString Pager(this HtmlHelper helper,
string pagerId, //分页控件Id
int curPage, //当前页码
int totalSize, //总记录数
string pagerTemp = "_PagerTemp", //分页控件模板
int pageSize = 10, //每页显示10条
int pageNum = 5, //显示的页码数目
string datatype = "text", //默认是Url传值
Dictionary<string, string> parameters = null //参数列表
){
//创建分页控件方法
}
_PageTemp 分页控件显示的模板
总结: 美中不足的一点是 查询或者过滤条件改变的时候,要清空 curPage 为 1