MVC分页
分页
首先创建个MyHtmlHelper类:
public static class MyHtmlHelper { public static HtmlString ShowPageNavigate(this HtmlHelper htmLHelper, int currentPage, int pageSize, int totalcount) { var redirectTo = htmLHelper.ViewContext.RequestContext.HttpContext.Request.Url.AbsolutePath; pageSize = pageSize == 0 ? 3 : pageSize; var totalPages = Math.Max((totalcount + pageSize - 1) / pageSize, 1);//总贡数 var output = new StringBuilder(); if (totalPages > 1) { //if(currentPage!=1) {//处理首页连接 output.AppendFormat("<a class='pageLink'href='{0}?pageIndex=1&pageSize={1}'>首页</a>", redirectTo, pageSize); } if (currentPage > 1) {//处理上一页的连接 output.AppendFormat("<a class='pageLink'href='{0}?pageIndex={1}&pageSize={2}'>上一页</a>", redirectTo, currentPage - 1, pageSize); } else { //output.Append(""<span class='pageLink'>上一页</span>"); } output.Append(" "); int currint = 5; for (int i = 0; i <= 10; i++) {//-共最多显示10个页码,前面5个,后面5个 if ((currentPage + i - currint) >= 1 && (currentPage + i - currint) <= totalPages) { if (currint == i) {//当前页处理 //output.Append(string.Format("[{e}]",currentPage)); output.AppendFormat("<a class='cpb'href='{0}?pageIndex={1}&pagesize={2}'>{3}</a>", redirectTo, currentPage, pageSize, currentPage); } else {//一般页处理 output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>{3}</a>", redirectTo, currentPage + i - currint, pageSize, currentPage + i - currint); } } output.Append(" "); } if (currentPage < totalPages) {//处理下一页的链接 output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>下一页</a>", redirectTo, currentPage + 1, pageSize); } else { //output.Append("<span class='pagelink'>下一页</span>"); } output.Append(" "); if (currentPage != totalPages) { output.AppendFormat("<a class='pageLink'href='{0}?pageIndex={1}&pageSize={2}'>末页</a>", redirectTo, totalPages, pageSize); } output.Append(" "); } output.AppendFormat("第{0}页/共{1}页", currentPage, totalPages);//这个统计加不加都行 return new HtmlString(output.ToString()); } }
要用的时候可以直接调用:例如
pageSize是每个页面多少条数据。
public ViewResult Index(int pageIndex = 1, int pageSize = 4) { ViewData["pageIndex"] = pageIndex; ViewData["pageSize"] = pageSize; ViewData["total"] = db.news.Count(); ViewData.Model = db.news .OrderBy(u => u.NewsID) .Skip(pageSize * (pageIndex - 1)) .Take(pageSize).AsEnumerable(); return View(); }
Html:
@model IEnumerable<MVCNews.Models.news> @{ Layout = null; } <!DOCTYPE html> <html> <head> <title>Index</title> </head> <body> <p> @Html.ActionLink("Create New", "Create") </p> <table> <tr> <th> subjectname </th> <th> style </th> <th> datatime </th> <th> undertime </th> <th> newsUpdateUser </th> <th> newsAudit </th> <th> newsstyle </th> <th> newslevel </th> <th> stuID </th> <th></th> </tr> @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.subjectname) </td> <td> @Html.DisplayFor(modelItem => item.style) </td> <td> @Html.DisplayFor(modelItem => item.datatime) </td> <td> @Html.DisplayFor(modelItem => item.undertime) </td> <td> @Html.DisplayFor(modelItem => item.newsUpdateUser) </td> <td> @Html.DisplayFor(modelItem => item.newsAudit) </td> <td> @Html.DisplayFor(modelItem => item.newsstyle) </td> <td> @Html.DisplayFor(modelItem => item.newslevel) </td> <td> @Html.DisplayFor(modelItem => item.stuID) </td> <td> @Html.ActionLink("Edit", "Edit", new { id=item.NewsID }) | @Html.ActionLink("Details", "Details", new { id=item.NewsID }) | @Html.ActionLink("Delete", "Delete", new { id=item.NewsID }) </td> </tr> } </table> <div id="page"> @Html.ShowPageNavigate((int)ViewData["pageIndex"],(int)ViewData["pageSize"],(int)ViewData["total"]) </div> </body> </html>