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>

 

  

posted @ 2020-07-14 17:02  我的未来方程式i  阅读(150)  评论(0编辑  收藏  举报