热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HtmlHelper的扩展分页方法

一、新建一个空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=" />














@foreach (
var item in Model)
{






}

ID 订单号 运单号 运费
@item.ID @item.OrderNo @item.EMS @item.WayFee

@Html.Pager(Model)


 六、运行效果如下图:

 


推荐阅读
author-avatar
投资改变生活-青岛_688
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有