MVC分页更有效率

创建Controller控件器与强类型视图呢,还有Models里面的对象实体,相信你们看了我之前发的就能创建好了,在这里呢就不创建了哈亲

 

在用户控件器里面写代码了

下面这个分页的方法

  1. /// <summary> 
  2.        /// 用户信息分页 
  3.        /// </summary> 
  4.        /// <returns></returns> 
  5.        public ActionResult UserDataPage() 
  6.        { 
  7.            EFFristModelEntities ef = new EFFristModelEntities(); 
  8.            int pageIndex = 1;//记录页的条数 
  9.            int pageSize = 3;//每页显示的条数 
  10.            int.TryParse(Request.QueryString["pageIndex"],out pageIndex);//强转一下这个记录页的条数 
  11.            int pageIndexCount =Convert.ToInt32(ef.UserInfo.Count());//获取 总的记录数 
  12.            int pageCount = Convert.ToInt32(Math.Ceiling(pageIndexCount*1.0/pageSize));//获取总的页数 
  13.            //判断页的取值范围 
  14.            if (pageIndex < 1) 
  15.            { 
  16.                pageIndex = 1; 
  17.            } 
  18.            if (pageIndex > pageCount) 
  19.            { 
  20.                pageIndex = pageCount; 
  21.            } 
  22.            //Linq语句 
  23.            var temp = from user in ef.UserInfo 
  24.                       .OrderBy(user => user.ID) 
  25.                       .Skip((pageIndex - 1) * pageSize)//跳过的序列 
  26.                       .Take(pageSize)//返回指定数量的元素 
  27.                       select user; 
  28.            ViewData.Model = temp;//把这个Linq语句读取的数据给这个实体model 
  29.            ViewData["pageIndex"] = pageIndex; 
  30.            ViewData["pageIndexCount"] = pageIndexCount; 
  31.            ViewData["pageCount"] = pageCount; 
  32.            ViewData["pageSize"] = pageSize; 
  33.            return View(); 
  34.        } 

这个在前台循环的展示数据

  1. <%for (int i = 1; i <= Convert.ToInt32(ViewData["pageCount"]); i++) 
  2.      { %> 
  3.        <%:Html.ActionLink(i.ToString(),"UserDataPage",new {pageIndex=i}) %><!--这用到了Html.ActionLink链接标签里面的参数有一个文本链接就是所得到的数字,第二个参数为执行的方法,第三个是值--> 
  4.    <%} %> 
  5.    <%:"当前页:" + ViewData["pageSize"] + "数据"%>&nbsp;<%:"共:"+ViewData["pageIndexCount"]+"条" %>&nbsp;<%:"共:"+ViewData["pageCount"]+"页" %>&nbsp; 
  6.  

第二种分页  有样式

这个是在models里面创建的类 是一个静态的类型为HtmlString的 是微软定义的一个类

    1. public static HtmlString ShowPageNavigate(this HtmlHelper htmlHelper, int currentPage, int pageSize, int totalCount) 
    2.         { 
    3.             var redirectTo = htmlHelper.ViewContext.RequestContext.HttpContext.Request.Url.AbsolutePath; 
    4.             pageSize = pageSize == 0 ? 3 : pageSize; 
    5.             var totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1); //总页数 
    6.             var output = new StringBuilder(); 
    7.             if (totalPages > 1) 
    8.             { 
    9.                 //if (currentPage != 1) 
    10.                 {//处理首页连接 
    11.                     output.AppendFormat("<a class='pageLink' href='{0}?pageIndex=1&pageSize={1}'>首页</a> ", redirectTo, pageSize); 
    12.                 } 
    13.                 if (currentPage > 1) 
    14.                 {//处理上一页的连接 
    15.                     output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>上一页</a> ", redirectTo, currentPage - 1, pageSize); 
    16.                 } 
    17.                 else 
    18.                 { 
    19.                     // output.Append("<span class='pageLink'>上一页</span>"); 
    20.                 } 
    21.  
    22.                 output.Append(" "); 
    23.                 int currint = 5; 
    24.                 for (int i = 0; i <= 10; i++) 
    25.                 {//一共最多显示10个页码,前面5个,后面5个 
    26.                     if ((currentPage + i - currint) >= 1 && (currentPage + i - currint) <= totalPages) 
    27.                     { 
    28.                         if (currint == i) 
    29.                         {//当前页处理 
    30.                             //output.Append(string.Format("[{0}]", currentPage)); 
    31.                             output.AppendFormat("<a class='cpb' href='{0}?pageIndex={1}&pageSize={2}'>{3}</a> ", redirectTo, currentPage, pageSize, currentPage); 
    32.                         } 
    33.                         else 
    34.                         {//一般页处理 
    35.                             output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>{3}</a> ", redirectTo, currentPage + i - currint, pageSize, currentPage + i - currint); 
    36.                         } 
    37.                     } 
    38.                     output.Append(" "); 
    39.                 } 
    40.                 if (currentPage < totalPages) 
    41.                 {//处理下一页的链接 
    42.                     output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>下一页</a> ", redirectTo, currentPage + 1, pageSize); 
    43.                 } 
    44.                 else 
    45.                 { 
    46.                     //output.Append("<span class='pageLink'>下一页</span>"); 
    47.                 } 
    48.                 output.Append(" "); 
    49.                 if (currentPage != totalPages) 
    50.                 { 
    51.                     output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>末页</a> ", redirectTo, totalPages, pageSize); 
    52.                 } 
    53.                 output.Append(" "); 
    54.             } 
    55.             output.AppendFormat("第{0}页 / 共{1}页", currentPage, totalPages);//这个统计加不加都行 
    56.  
    57.             return new HtmlString(output.ToString()); 
    58.         } 
    59. 在前台调用这个方法即可
    60.  
  1. <div class="page_nav"> 
  2.     <%:Html.ShowPageNavigate(Convert.ToInt32(ViewData["pageIndex"]),3,Convert.ToInt32(ViewData["pageCount"])) %> 
  3.    </div> 
  4.    <p> 

这个是样式文件夹 这个呢可以在网上扒的哈,我这不一定你就能用的哦 亲

    .paginator 
    { 
        font: 12px Arial, Helvetica, sans-serif; 
        padding: 10px 20px 10px 0; 
        margin: 0px; 
    } 
     
    .paginator a 
    { 
        border: solid 1px #ccc; 
        color: #0063dc; 
        cursor: pointer; 
        text-decoration: none; 
    } 
     
    .paginator a:visited 
    { 
        padding: 1px 6px; 
        border: solid 1px #ddd; 
        background: #fff; 
        text-decoration: none; 
    } 
     
    .paginator .cpb 
    { 
        border: 1px solid #F50; 
        font-weight: 700; 
        color: #F50; 
        background-color: #ffeee5; 
    } 
     
    .paginator a:hover 
    { 
        border: solid 1px #F50; 
        color: #f60; 
        text-decoration: none; 
    } 
     
    .paginator a, .paginator a:visited, .paginator .cpb, .paginator a:hover 
    { 
        float: left; 
        height: 16px; 
        line-height: 16px; 
        min-width: 10px; 
        _width: 10px; 
        margin-right: 5px; 
        text-align: center; 
        white-space: nowrap; 
        font-size: 12px; 
        font-family: Arial,SimSun; 
        padding: 0 3px; 
    } 
    /*****************************2*/ 
    .page_nav, 
     
    #commentpage{clear:both; padding:15px 0; color:#666; font:normal 12px/24px Arial; text-align:center;} 
     
    .page_nav a, 
     
    #commentpage a{display:inline-block; height:22px; margin:0 2px; padding:0 8px; border:solid 1px #dbe5ee; -moz-border-radius:2px; -webkit-border-radius:2px; -khtml-border-radius:2px; border-radius:2px; background:#fff; color:#333; font:normal 12px/22px Arial, Helvetica, sans-serif; cursor:pointer;} 
     
        .page_nav strong{display:inline-block; height:24px; margin:0 3px; padding:0 8px; border:none; -moz-border-radius:2px; -webkit-border-radius:2px; -khtml-border-radius:2px; border-radius:2px; background:#c00; color:#fff; font-weight:normal; line-height:24px; text-decoration:none;} 
     
        .page_nav a:hover, 
     
        .page_nav a.on{height:24px; margin:0 3px; border:none; background:#c00; color:#fff; line-height:24px; text-decoration:none;} 
     
        .page_nav a.select{cursor:default;} 
     
        .page_nav .view_all{display:block; text-align:center;} 
     
        .page_nav .view_all a{height:auto; margin:0; padding:0; border:none; color:#06c; line-height:24px;} 
     
        .page_nav .view_all a:hover{height:auto; margin:0; padding:0; background:none;} 

 

 

 

posted on 2013-02-04 01:05  FourLeafColver  阅读(482)  评论(0)    收藏  举报

导航