asp.net MVC分页代码分享

本文实例为大家分享了MVC分页代码,供大家参考,具体内容如下

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

{

/// <summary>

/// 分页

/// </summary>

/// <param name="helper"></param>

/// <param name="id">分页id</param>

/// <param name="currentPageIndex">当前页</param>

/// <param name="pageSize">分页尺寸</param>

/// <param name="recordCount">记录总数</param>

/// <param name="htmlAttributes">分页头标签属性</param>

/// <param name="className">分页样式</param>

/// <param name="mode">分页模式</param>

/// <returns></returns>

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();

}

/// <summary>

/// 分页

/// </summary>

/// <param name="helper"></param>

/// <param name="id">分页id</param>

/// <param name="currentPageIndex">当前页</param>

/// <param name="pageSize">分页尺寸</param>

/// <param name="recordCount">记录总数</param>

/// <param name="className">分页样式</param>

/// <returns></returns>

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);

}

/// <summary>

/// 分页

/// </summary>

/// <param name="helper"></param>

/// <param name="id">分页id</param>

/// <param name="currentPageIndex">当前页</param>

/// <param name="pageSize">分页尺寸</param>

/// <param name="recordCount">记录总数</param>

/// <returns></returns>

public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount)

{

return Pager(helper, id, currentPageIndex, pageSize, recordCount, null);

}

/// <summary>

/// 分页

/// </summary>

/// <param name="helper"></param>

/// <param name="id">分页id</param>

/// <param name="currentPageIndex">当前页</param>

/// <param name="pageSize">分页尺寸</param>

/// <param name="recordCount">记录总数</param>

/// <param name="mode">分页模式</param>

/// <returns></returns>

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);

}

/// <summary>

/// 分页

/// </summary>

/// <param name="helper"></param>

/// <param name="id">分页id</param>

/// <param name="currentPageIndex">当前页</param>

/// <param name="pageSize">分页尺寸</param>

/// <param name="recordCount">记录总数</param>

/// <param name="className">分页样式</param>

/// <param name="mode">分页模式</param>

/// <returns></returns>

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);

}

/// <summary>

/// 获取普通分页

/// </summary>

/// <param name="currentPageIndex"></param>

/// <param name="pageSize"></param>

/// <param name="recordCount"></param>

/// <returns></returns>

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("<tr><td>");

sb.AppendFormat("总共{0}条记录,共{1}页,当前第{2}页 ", recordCount, pageCount, currentPageIndex);

if (currentPageIndex == 1)

sb.Append("<span>首页</span> ");

else

{

string url1 = string.Format(url.ToString(), 1);

sb.AppendFormat("<span><a href={0}>首页</a></span> ", url1);

}

if (currentPageIndex > 1)

{

string url1 = string.Format(url.ToString(), currentPageIndex - 1);

sb.AppendFormat("<span><a href={0}>上一页</a></span> ", url1);

}

else

sb.Append("<span>上一页</span> ");

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("<span><a href={0}>下一页</a></span> ", url1);

}

else

sb.Append("<span>下一页</span> ");

if (currentPageIndex == pageCount)

sb.Append("<span>末页</span> ");

else

{

string url1 = string.Format(url.ToString(), pageCount);

sb.AppendFormat("<span><a href={0}>末页</a></span> ", url1);

}

return sb.ToString();

}

/// <summary>

/// 获取数字分页

/// </summary>

/// <param name="currentPageIndex"></param>

/// <param name="pageSize"></param>

/// <param name="recordCount"></param>

/// <param name="pageCount"></param>

/// <param name="url"></param>

/// <returns></returns>

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 % 10;

}

else

m = 10;

for (int i = k * 10 + 1; i <= k * 10 + m; i++)

{

if (i == currentPageIndex)

sb.AppendFormat("<span><font color=red><b>{0}</b></font></span> ", i);

else

{

string url1 = string.Format(url.ToString(), i);

sb.AppendFormat("<span><a href={0}>{1}</a></span> ", url1, i);

}

}

return sb.ToString();

}

}

/// <summary>

/// 分页模式

/// </summary>

public enum PageMode

{

/// <summary>

/// 普通分页模式

/// </summary>

Normal,

/// <summary>

/// 普通分页加数字分页

/// </summary>

Numeric

}

}

html代码

<div id="pageNav" class="pageinator">

@Html.ShowPageNavigate((int)ViewData["pageindex"], (int)ViewBag.pageSize, (int)ViewBag.totalCount);

</div>

控制器

shopEntities shop = new shopEntities();

public ActionResult Index()

{

//IQueryable<tbl_order> order = (from a in shop.tbl_order select a).OrderBy(a=>a.id).Skip(10).Take(10);

//ViewData["order"] = order;

//return View();

int pageIndex = Request["pageIndex"] == null ? 1 : int.Parse(Request["pageIndex"]);

int pageSize = Request["pageSize"] == null ? 10 : int.Parse(Request["pageSize"]);

int totalCount = 0;

//给前台传递 分页的参数数据

ViewData["pageIndex"] = pageIndex;

//ViewData["pageSize"] = pageSize;

ViewBag.pageSize = pageSize;

//总条数

totalCount = shop.tbl_order.Count();

ViewBag.totalCount = totalCount;

//把当前页面数据发送到前台。

//ViewData.Model = db.UserInfo.ToList();

//List<tbl_order> pp = shop.tbl_order

// .OrderBy(u => u.id)

// .Skip((pageIndex - 1) * pageSize)

// .Take(pageSize).ToList();

IQueryable<tbl_order> pp = shop.tbl_order

.OrderBy(u => u.id)

.Skip((pageIndex - 1) * pageSize)

.Take(pageSize);

return View(pp);

}

以上是 asp.net MVC分页代码分享 的全部内容, 来源链接: utcz.com/z/342777.html

回到顶部