作者:投资改变生活-青岛_688 | 来源:互联网 | 2023-05-17 14:14
一、新建一个空MVC项目,命名为MVCAppPager二、新建一个文件夹PageHelper,在文件夹下新建接口IPageList以及实现类PageListIPageList接口:publicin
一、新建一个空MVC项目,命名为MVCAppPager
二、新建一个文件夹PageHelper,在文件夹下新建接口IPageList以及实现类PageList
IPageList接口:
public interface IPageList
{
///
/// 第几页
///
int PageIndex { get; set; }
///
/// 每页记录数
///
int PageSize { get; set; }
///
/// 总页数
///
int PageTotal { get; }
///
/// 记录总数
///
long RecordTotal { get; set; }
///
/// 每页开始位置
///
long CurrentStart { get; }
///
/// 每页结束位置
///
long CurrentEnd { get; }
}
PageList实现类:
public class PageList : List, IPageList
{
public PageList(IEnumerable source) : base(source)
{
}
public PageList(IEnumerable source, int pageIndex, int pageSize, long recordTotal)
{
if (source != null)
{
this.AddRange(source);
}
PageIndex = pageIndex;
PageSize = pageSize;
RecordTotal = recordTotal;
}
public int PageIndex { get; set; }
public int PageSize { get; set; }
public long RecordTotal { get; set; }
public int PageTotal
{
get
{
return RecordTotal % PageSize == 0 ? (int)RecordTotal / PageSize : (int)RecordTotal / PageSize + 1;
}
}
public long CurrentStart
{
get
{
return PageIndex * PageSize + 1;
}
}
public long CurrentEnd
{
get
{
return (PageIndex + 1) * PageSize > RecordTotal ? RecordTotal : (PageIndex + 1) * PageSize;
}
}
}
三、创建分页HtmlHelper扩展方法Pager
namespace System.Web.Mvc
{
public static class ExtHelper
{
public static MvcHtmlString Pager(this HtmlHelper helper, IPageList list)
{
var redirectTo = helper.ViewContext.RequestContext.HttpContext.Request.Url.AbsolutePath;
var output = new StringBuilder();
if (list.PageTotal > 1)
{
output.AppendFormat("");
//处理首页连接 output.AppendFormat(
"首页 ", redirectTo, list.PageSize);
if (list.PageIndex >
1)
{//处理上一页的连接 output.AppendFormat(
"上一页 ", redirectTo, list.PageIndex -
1, list.PageSize);
}
else
{
output.Append("上一页");
}
output.Append(" ");
int currint =
5;
for (
int i =
0; i <=
10; i++
)
{//一共最多显示10个页码,前面5个,后面5个 if ((list.PageIndex + i - currint) >=
0 && (list.PageIndex + i - currint) <
list.PageTotal)
{
if (currint ==
i)
{//当前页处理 output.AppendFormat(
"{3} ", redirectTo, list.PageIndex, list.PageSize, list.PageIndex +
1);
}
else
{//一般页处理 output.AppendFormat(
"{3} ", redirectTo, list.PageIndex + i - currint, list.PageSize, list.PageIndex + i - currint +
1);
}
}
output.Append(" ");
}
if (list.PageIndex
1)
{//处理下一页的链接
output.AppendFormat("下一页 ", redirectTo, list.PageIndex + 1, list.PageSize);
}
else
{
output.Append("下一页");
}
output.Append(" ");
if (list.PageIndex != list.PageTotal - 1)
{
output.AppendFormat("末页 ", redirectTo, list.PageTotal - 1, list.PageSize);
}
output.Append(" ");
}
output.AppendFormat("第{0}页 / 共{1}页", list.PageIndex+1, list.PageTotal);//这个统计加不加都行
output.AppendFormat(" ");
return new MvcHtmlString(output.ToString());
}
}
}
注意将命名空间修改为:namespace System.Web.Mvc,这样就不用每个页面都要引用命名空间了
四、控制器方式实现
1.在Models文件夹下,新建一个Order实体
namespace MvcAppPager.Models
{
public class Order
{
public long ID { get; set; }
public string OrderNo { get; set; }
public decimal WayFee { get; set; }
public string EMS { get; set; }
}
}
2.新建一个Home控制器,实现如下
public class HomeController : Controller
{
///
/// 构造数据
///
List list = new List
{
new Order { ID = 1,OrderNo="20160510",WayFee=20,EMS="C01111"},
new Order { ID = 2,OrderNo="20160512",WayFee=10,EMS="C01221"},
new Order { ID = 3,OrderNo="20160515",WayFee=15,EMS="C03411"},
new Order { ID = 4,OrderNo="20160518",WayFee=11,EMS="C01341"},
new Order { ID = 5,OrderNo="20160520",WayFee=16,EMS="C01551"},
new Order { ID = 6,OrderNo="20160521",WayFee=13,EMS="C02341"}
};
// GET: Home
public ActionResult Index(int pageIndex = 0,int pageSize = 2)
{
List source = list.Skip(pageIndex * pageSize).Take(pageSize).ToList();
PageList orderList = new PageList(source, pageIndex, pageSize, list.Count);
return View(orderList);
}
}
五、Index视图
@model MvcAppPager.PageHelper.PageList
@{
Layout = null;
}
"
viewport" cOntent=
" />
ID |
订单号 |
运单号 |
运费 |
---|
@foreach (var item in Model)
{
@item.ID |
@item.OrderNo |
@item.EMS |
@item.WayFee |
}
@Html.Pager(Model)
六、运行效果如下图: