• MVC EF分页实现


     

    1.Model中分页方法
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Web;
    using System.Web.Mvc;
     
    //命名空间用系统命名空间
    namespace System.Web.Mvc
    {
        public static class MyHtmlHelperExt
        {
            // 传一个字符串过来,我给你封装成一个标签:<span>txt</span> 
            public static string GetLable(this HtmlHelper helper, string txt)
            {
                return string.Format("<span>{0}</span>", txt);
            }
     
     
            // 传一个字符串过来,我给你封装成一个标签:<span>txt</span> 
            public static MvcHtmlString GetMvcHtmlStringLable(this HtmlHelper helper, string txt)
            {
                string str = string.Format("<span>{0}</span>", txt);
                //将上的str 转成   MvcHtmlString
     
                // 创建一个实例:new
                //本类有个静态方法帮我们创建 Create
                //y有个工厂帮我们创建一个实例:HttpApplicationFactory
                //return new MvcHtmlString(str);
     
                //
                return MvcHtmlString.Create(str);
            }
     
            // 传一个字符串过来,我给你封装成一个标签:<span>txt</span> 
            public static HtmlString GetHtmlStringLable(this HtmlHelper helper, string txt)
            {
                string str = string.Format("<span class='laoma'>{0}</span>", txt);
                //将上的str 转成   MvcHtmlString
     
                // 创建一个实例:new
                //本类有个静态方法帮我们创建 Create
                //y有个工厂帮我们创建一个实例:HttpApplicationFactory
                //return new MvcHtmlString(str);
     
                //
                //return MvcHtmlString.Create(str);
     
                return new HtmlString(str);
            }
     
     
     
            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("[{0}]", 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());
            }
        }
    }
     
     
    2.控制器中写法
     
            Entities db = new Entities();
            public ActionResult Index()
            {
                var pageIndex = this.Request["pageIndex"] == null ? 1 : int.Parse(this.Request["pageIndex"]);
                var pageSize = this.Request["pageSize"] == null ? 10 : int.Parse(this.Request["pageSize"]);
                var total = db.yxs_orders.Count();
     
                ViewData["pageIndex"] = pageIndex;
                ViewData["pageSize"] = pageSize;
                ViewData["total"] = total;
     
                ViewData.Model = db.yxs_orders.OrderBy<yxs_ordersint>(u => u.Id)
                    .Skip((pageIndex - 1) * pageSize)
                    .Take(pageSize);
                return View();
            }
     
     
    3.前台调用
    <div class="paginator"><%:Html.ShowPageNavigate((int)ViewData["pageIndex"],(int)ViewData["pageSize"],(int)ViewData["total"]) %></div>
     
    4.样式
    .paginator
    {
        font12px ArialHelveticasans-serif;
        padding10px 20px 10px 0;
        margin0px;
    }
     
    .paginator a
    {
        bordersolid 1px #ccc;
        color#0063dc;
        cursorpointer;
        text-decorationnone;
    }
     
    .paginator a:visited
    {
        padding1px 6px;
        bordersolid 1px #ddd;
        background#fff;
        text-decorationnone;
    }
     
    .paginator .cpb
    {
        border1px solid #F50;
        font-weight700;
        color#F50;
        background-color#ffeee5;
    }
     
    .paginator a:hover
    {
        bordersolid 1px #F50;
        color#f60;
        text-decorationnone;
    }
     
    .paginator a.paginator a:visited.paginator .cpb.paginator a:hover
    {
        floatleft;
        height16px;
        line-height16px;
        min-width10px;
        _width10px;
        margin-right5px;
        text-aligncenter;
        white-spacenowrap;
        font-size12px;
        font-familyArial,SimSun;
        padding0 3px;
    }
  • 相关阅读:
    WCF客户端获取服务端异常[自定义异常]
    关于VS2013 Browser Link 新功能
    MVC 单元测试xUnit初探
    ASP.NET MVC4中加入Log4Net日志记录功能
    简洁的MVC思想框架——Nancy(Session的使用)
    iOS开发之快速排序算法
    iOS开发之内购的完整流程
    ios面试数据结构与算法
    iOS开发之读取info.plist配置信息
    iOS开发之ARC与非ARC的设置
  • 原文地址:https://www.cnblogs.com/jiayue360/p/3166947.html
Copyright © 2020-2023  润新知