分页Html辅助方法

using System.Text;
using System.Web;
using System.Web.Mvc; namespace System.Web.Mvc
{
public static class HtmlExtensions
{
#region 分页Html辅助方法
/// <summary>
/// 分页Html辅助方法
/// </summary>
/// <param name="htmlHelper"></param>
/// <param name="currentPage"></param>
/// <param name="pageSize"></param>
/// <param name="totalCount"></param>
/// <param name="parameterString"></param>
/// <returns></returns>
public static HtmlString PageNavigate(this HtmlHelper htmlHelper, int currentPage, int pageSize, int totalCount, string parameterString)
{
var redirectTo = htmlHelper.ViewContext.RequestContext.HttpContext.Request.Url.AbsolutePath;
pageSize = pageSize == ? : pageSize;
var totalPages = Math.Max((totalCount + pageSize - ) / pageSize, );//总页数
var output = new StringBuilder();
output.Append("<nav>");
output.Append("<ul class='pagination'>");
string pageSizrWithParameter = string.Empty;
if (!string.IsNullOrEmpty(parameterString))
pageSizrWithParameter = pageSize + "&" + parameterString;
if (totalPages>)
{
output.AppendFormat("<li><a href='{0}?pageIndex=1&pageSize={1}' aria-label='Previous'><span aria-hidden='true'>&laquo;</span></a></li>",redirectTo,pageSizrWithParameter);
if (currentPage > )//处理上一页连接
output.AppendFormat("<li><a href='{0}?pageIndex={1}&pageSize={2}'>上一页</a></li>",redirectTo,currentPage-,pageSizrWithParameter); output.Append("");
int currint = ;
for (int i = ; i < ; i++)
{//一共最多显示10个页码,前面五个后面五个
if ((currentPage+i-currint)>= && (currentPage+-currint)<=totalPages)
{
if (currint == i)//当前页处理
output.AppendFormat("<li class='active'><a href='{0}?pageIndex={1}&pageSize={2}'>{3}</a></li>", redirectTo, currentPage, pageSizrWithParameter, currentPage);
else//一般页处理
output.AppendFormat("<li><a href='{0}?pageIndex={1}&pageSize={2}'>{3}</a></li>",redirectTo,currentPage+i-currint,pageSizrWithParameter,currentPage+i-currint);
}
output.Append("");
}
if (currentPage < totalPages)//处理下一页连接
output.AppendFormat("<li><a href='{0}?pageIndex={1}&pageSize={2}'>下一页</a></li>", redirectTo, currentPage + , pageSizrWithParameter);
output.Append(""); if (currentPage != totalPages)
output.AppendFormat("<li><a href='{0}?pageIndex={1}&pageSize={2}'><span aria-hidden='true'>&raquo;</span></a></li>", redirectTo, totalPages, pageSizrWithParameter);
output.Append("");
}
output.Append("</ul>");
output.Append("</nav>"); return new HtmlString(output.ToString());
}
#endregion
}
}

页面相关位置调用

<!--在控制器里面存储的ViewData,totalRecord表示根据添加查询到的数据并返回的条数,parameter表示搜索条件(关键字搜索等等)-->
@Html.PageNavigate(int.Parse(ViewData["pageIndex"].ToString()),int.Parse(ViewData["pageSize"].ToString()),int.Parse(ViewData["totalRecord"].ToString()),ViewData["parameter"].ToString())

控制器相关方法实现

例:
public Action Moment(int pageIndex=,int pageSize=)
{
int totalRecord =;
List<Aniuge_Moments> lam =MomentsBussiness.GetInstance().GetMoment(pageSize,pageIndex,out totalRecord);//获取分页显示的列表
ViewData["totalRecord"]=totalRecord;
ViewData["pageIndex"]=pageIndex;
ViewData["pageSize"]=pageSize;
#region 生成搜索状态保持数据
StringBuilder sb =new StringBuilder ();
foreach(string item in Request.QueryString.Allkeys)
{
if(!item.Equals("pageIndex")&&!item.Equls("pageSize"))
sb.Append(item + "=" +Request.QueryString[item]+"&");
}
ViewData["parameter"]=sb.Tostring().Trim("&");
#endregion
return View(lam);
}

要无刷新分页及更多功能  看“轻量级表格插件Bootstrap Table。拥有强大的支持固定表头、单/复选、排序、分页、搜索及自定义表头等功能。”这便随笔

最新文章

  1. Assembler : The Basics In Reversing
  2. html 网页文本设计
  3. GDC2016 【全境封锁】的全局照明技术
  4. c语言-&gt;和 .
  5. [操作系统实验lab2]实验报告
  6. linux下单节点oracle数据库间ogg搭建
  7. ArcGIS API for JavaScript 学习笔记(一)
  8. 根据请求头跳转判断Android&amp;iOS
  9. Linux下同步工具inotify+rsync使用详解
  10. openstack私有云布署实践【13.1 网络Neutron-compute节点配置(科兴环境)】
  11. jquery各版本区别
  12. C++ 元编程 —— 让编译器帮你写程序
  13. redis 梳理笔记(一)
  14. [转]怎么查看和修改 MySQL 的最大连接数?
  15. [BZOJ]1019 汉诺塔(SHOI2008)
  16. 浅析JavaScript解析赋值、浅拷贝和深拷贝的区别
  17. 如何用core自动创建model,与数据库连接
  18. 原生javascript实现extend
  19. 小组互评Alpha版本
  20. Hibernate学习笔记:注解@OneToMany和@ManyToOne的单独使用问题 不成对使用

热门文章

  1. NIO组件Selector工作机制详解(下)
  2. EPPlus与Excel完美的结合
  3. wpf DataGrid CheckBox列全选
  4. [rxjs] Creating An Observable with RxJS
  5. UIImage载入图片的几种方式及差别
  6. Cocos2d-x中获取设备语言的方法
  7. Android(java)学习笔记191:Android数据存储5种方式总结
  8. Spring Mvc session拦截器实现
  9. HDU-1020(水题)
  10. Java-struts2 之值栈问题