千家信息网

如何写一个支持普通分页和综合分页的MVC分页Helper

发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,今天就跟大家聊聊有关如何写一个支持普通分页和综合分页的MVC分页Helper,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。下面是分页效果:分页
千家信息网最后更新 2025年11月11日如何写一个支持普通分页和综合分页的MVC分页Helper

今天就跟大家聊聊有关如何写一个支持普通分页和综合分页的MVC分页Helper,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

下面是分页效果:

分页代码:

PagerHelper.cs

using System.Collections.Generic;using System.Collections.Specialized;using System.Linq;using System.Web;using System.Text;using System.Web.Mvc;using System.Web.Routing;using System.Data.Objects.DataClasses;namespace System.Web.Mvc{ public static class PagerHelper { ///  /// 分页 ///  ///  /// 分页id /// 当前页 /// 分页尺寸 /// 记录总数 /// 分页头标签属性 /// 分页样式 /// 分页模式 ///  public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount, object htmlAttributes, string className,PageMode mode) {  TagBuilder builder = new TagBuilder("table");  builder.IdAttributeDotReplacement = "_";  builder.GenerateId(id);  builder.AddCssClass(className);  builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));  builder.InnerHtml = GetNormalPage(currentPageIndex, pageSize, recordCount,mode);  return builder.ToString(); } ///  /// 分页 ///  ///  /// 分页id /// 当前页 /// 分页尺寸 /// 记录总数 /// 分页样式 ///  public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount, string className) {  return Pager(helper, id, currentPageIndex, pageSize, recordCount, null, className,PageMode.Normal); } ///  /// 分页 ///  ///  /// 分页id /// 当前页 /// 分页尺寸 /// 记录总数 ///  public static string Pager(this HtmlHelper helper,string id,int currentPageIndex,int pageSize,int recordCount) {  return Pager(helper, id, currentPageIndex, pageSize, recordCount,null); } ///  /// 分页 ///  ///  /// 分页id /// 当前页 /// 分页尺寸 /// 记录总数 /// 分页模式 ///  public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount,PageMode mode) {  return Pager(helper, id, currentPageIndex, pageSize, recordCount, null,mode); } ///  /// 分页 ///  ///  /// 分页id /// 当前页 /// 分页尺寸 /// 记录总数 /// 分页样式 /// 分页模式 ///  public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount,string className, PageMode mode) {  return Pager(helper, id, currentPageIndex, pageSize, recordCount, null,className,mode); } ///  /// 获取普通分页 ///  ///  ///  ///  ///  private static string GetNormalPage(int currentPageIndex, int pageSize, int recordCount,PageMode mode) {  int pageCount = (recordCount%pageSize ==0?recordCount/pageSize:recordCount/pageSize+1);  StringBuilder url = new StringBuilder();  url.Append(HttpContext.Current.Request.Url.AbsolutePath+"?page={0}");  NameValueCollection collection = HttpContext.Current.Request.QueryString;  string[] keys = collection.AllKeys;  for (int i = 0; i < keys.Length; i++)  {  if (keys[i].ToLower() != "page")   url.AppendFormat("&{0}={1}", keys[i], collection[keys[i]]);  }  StringBuilder sb = new StringBuilder();  sb.Append("");  sb.AppendFormat("总共{0}条记录,共{1}页,当前第{2}页  ", recordCount, pageCount, currentPageIndex);  if (currentPageIndex == 1)  sb.Append("首页 ");  else  {  string url1 = string.Format(url.ToString(), 1);  sb.AppendFormat("首页 ", url1);  }  if (currentPageIndex > 1)  {  string url1 = string.Format(url.ToString(), currentPageIndex - 1);  sb.AppendFormat("上一页 ", url1);  }  else  sb.Append("上一页 ");  if(mode == PageMode.Numeric)  sb.Append(GetNumericPage(currentPageIndex,pageSize,recordCount,pageCount,url.ToString()));  if (currentPageIndex < pageCount)  {  string url1 = string.Format(url.ToString(), currentPageIndex+1);  sb.AppendFormat("下一页 ", url1);  }  else  sb.Append("下一页 ");  if (currentPageIndex == pageCount)  sb.Append("末页 ");  else  {  string url1 = string.Format(url.ToString(), pageCount);  sb.AppendFormat("末页 ", url1);  }  return sb.ToString(); } ///  /// 获取数字分页 ///  ///  ///  ///  ///  ///  ///  private static string GetNumericPage(int currentPageIndex, int pageSize, int recordCount, int pageCount,string url) {  int k = currentPageIndex / 10;  int m = currentPageIndex % 10;  StringBuilder sb = new StringBuilder();  if (currentPageIndex / 10 == pageCount / 10)  {  if (m == 0)  {   k--;   m = 10;  }  else   m = pageCount;  }  else  m = 10;  for (int i = k * 10 + 1; i <= k * 10 + m; i++)  {  if (i == currentPageIndex)   sb.AppendFormat("{0} ", i);  else  {   string url1 = string.Format(url.ToString(), i);   sb.AppendFormat("{1} ",url1, i);  }  }    return sb.ToString(); } } ///  /// 分页模式 ///  public enum PageMode { ///  /// 普通分页模式 ///  Normal, ///  /// 普通分页加数字分页 ///  Numeric }}

PagerQuery.cs包含两个属性,一个是PageInfo实体类属性Pager,包含RecordCount,CurrentPageIndex,PageSize三个属性。一个是Model EntityList属性。

using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace System.Web.Mvc{ public class PagerQuery { public PagerQuery(TPager pager, TEntityList entityList) {  this.Pager = pager;  this.EntityList = entityList; } public TPager Pager { get; set; } public TEntityList EntityList { get; set; }  }}

PageInfo.cs

using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace System.Web.Mvc{ public class PagerInfo { public int RecordCount { get; set; } public int CurrentPageIndex { get; set; } public int PageSize { get; set; } }}

使用示例:

@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage>>" %> NewsList 

NewsList

<% foreach (var item in Model.EntityList) { %> <% } %>
NoteID Title Author Hit ReplyNum
<%= Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) %> | <%= Html.ActionLink("Details", "NewsDetail", new { noteID=item.NoteID })%> <%= Html.Encode(item.NoteID) %> <%= Html.Encode(item.Title) %> <%= Html.Encode(item.Author)%> <%= Html.Encode(item.Hit)%> <%= Html.Encode(item.ReplyNum)%>

<%=Html.Pager("pager",Model.Pager.CurrentPageIndex,Model.Pager.PageSize,Model.Pager.RecordCount,PageMode.Numeric) %>

controler:

[AcceptVerbs(HttpVerbs.Get)] public ActionResult NewsList(int boardID,int? page) {  PagerInfo pager = new PagerInfo();  NewsArticleInfo info = new NewsArticleInfo();  info.NewsBoard = new NewsBoardInfo();  info.NewsBoard.BoardID = boardID;  pager.RecordCount = Resolve().GetArticleDataList(info, ArticleTypeEnum.Pass);  pager.PageSize = 10;  pager.CurrentPageIndex = (page!=null?(int)page:1);  IList result = Resolve().GetArticleDataList(pager.CurrentPageIndex, pager.PageSize, ArticleTypeEnum.Pass, info);  PagerQuery> query = new PagerQuery>(pager,result);  return View(query); }

源码下载:http://xiazai.jb51.net/201609/yuanma/MvcPager(jb51.net).rar

看完上述内容,你们对如何写一个支持普通分页和综合分页的MVC分页Helper有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

尺寸 属性 总数 模式 支持 内容 样式 综合 数字 上一 首页 三个 两个 代码 实体 效果 更多 标签 源码 源码下载 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 做软件开发需要管理员权限吗 富民软件开发市场价 tbc服务器不排队 数据库系统故障的恢复技术 远端服务器问题是不是路由器坏了 网络技术助推家园共育 武汉大学网络安全学院毛俊宇 服务器硬盘取出后无法开机 服务器如何快速查询文件 新西兰 硕士 网络安全 数据库导入osm MYSQL数据库题目 答案 南阳系统软件开发公司 铜川软件开发厂家价格 研发部服务器 网络安全应急演练 场景 关于互联网科技的图片素材 计算机网络技术应届生起薪 各种语言连接数据库例子 教育局开展国家网络安全宣传 村里网络安全工作怎么开展的 广播电视地面接收服务器 电商erp软件开发服务价格 数据库系统故障的恢复技术 同花顺设置用哪个服务器 杭州云集网络技术 软件开发视频自动剪辑 裸金属服务器和虚拟机哪个好 不可替代的数据库审计系统 丹寨县税务局开展网络安全大检查
0