English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

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
 
  /// <요약>
  /// 페이지
  /// </요약>
  /// <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();
  }
  /// <요약>
  /// 페이지
  /// </요약>
  /// <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);
  }
  /// <요약>
  /// 페이지
  /// </요약>
  /// <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);
  }
  /// <요약>
  /// 페이지
  /// </요약>
  /// <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);
  }
  /// <요약>
  /// 페이지
  /// </요약>
  /// <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);
  }
  /// <요약>
  /// 일반 페이지 분류
  /// </요약>
  /// <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();
  }
  /// <요약>
  /// 获取数字分页
  /// </요약>
  /// <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();
  }
 }
 /// <요약>
 /// 페이지 분할 모드
 /// </요약>
 public enum PageMode
 
  /// <요약>
  /// 일반 페이지 분할 모드
  /// </요약>
  일반
  /// <요약>
  /// 일반 페이지 분할 및 숫자 페이지 분할
  /// </요약>
  숫자
 }
}

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()
  
   //10).Take(10);
   //ViewData["order"] = order;
   //return View();
   int pageIndex = Request["pageIndex"] == null ?63; 1 : int.Parse(Request["pageIndex"]);
   int pageSize = Request["pageSize"] == null ?63; 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);
  } 

이것이 본문의 전체 내용입니다. 많은 도움이 되었기를 바랍니다. 또한,呐喊 강의에 많은 지원을 부탁드립니다.

성명: 본문의 내용은 인터넷에서 가져왔으며, 저작권자는 본사이며, 인터넷 사용자가 자발적으로 기여하고 자체적으로 업로드한 내용으로, 사이트는 소유권을 가지지 않으며, 인공 편집을 하지 않았으며, 관련 법적 책임도 부담하지 않습니다. 저작권 문제가 의심되는 내용이 있다면, 이메일을 notice#w로 보내 주세요.3codebox.com에 이메일을 보내면 (#을 @으로 변경하세요) 신고를 하고, 관련 증거를 제공하면, 사이트는 즉시 의심스러운 저작권 내용을 삭제합니다.

좋아할 것 같은 것