
假分是得到数据集合后在去过滤.这个就是假分..所以足球说的就不确切了..得到的数据集合过滤和显示是可以在jsp页面实现也是可以在javabean中实现的..这种得到数据集合后再去分页的方法是假分.
分页其实就只有真分和假分.怎么实现就在于你真分就要在构在sql语句时去费功夫..而假分就是要在代码中下功夫..侧重点不同.性能不同..如果数据量大的话你的假分页就会把你的系统down掉.真分的行嫩个会很好,但是不容易抽象成一种公用的方法..假分页在数据量不大的情况下还是比较好用.可以抽象成一个公用方法..
就是这些区别..根据你的业务需求来区分吧..MVC只是一个规范..分页是一个方法..两个不搭嘎的...
MVC项目中有的时候List的条数比较多,需要分页显示,可以用如下的办法:1、写一个简单PaginatedList 辅助类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class PaginatedList<T>: List<T>{
public int PageIndex { getprivate set}
public int PageSize { getprivate set}
public int TotalCount { getprivate set}
public int TotalPages { getprivate set}
public PaginatedList(IQueryable<T>source, int pageIndex, int pageSize) {
PageIndex = pageIndex
PageSize = pageSize
TotalCount = source.Count()
TotalPages = (int) Math.Ceiling(TotalCount / (double)PageSize)
this.AddRange(source.Skip(PageIndex * PageSize).Take(PageSize))
}
public bool HasPreviousPage {
get {
return (PageIndex >0)
}
}
public bool HasNextPage {
get {
return (PageIndex+1 <TotalPages)
}
}
}
2、Controller中使用这个PaginatedList 类来返回View:
1
2
3
4
5
6
public ActionResult Index(int? page) {
const int pageSize = 10
var upcomingDinners = dinnerRepository.FindUpcomingDinners()
var paginatedDinners = new PaginatedList<Dinner>(upcomingDinners, page ?? 0,pageSize)
return View(paginatedDinners)
}
3、View中实现导航链接的Code如下:
1
2
3
4
5
6
7
8
<% if (Model.HasPreviousPage) { %>
<%= Html.RouteLink("<<<", "UpcomingDinners", new { page =
(Model.PageIndex-1) }) %>
<% } %>
<% if (Model.HasNextPage) { %>
<%= Html.RouteLink(">>>", "UpcomingDinners", new { page = (Model.PageIndex +
1) }) %>
<% } %>
ASP.NET MVC中进行分页的方式有多种,但在NuGet上使用最广泛的就是用PagedList、X.PagedList.Mvc进行分页。(原名为:PagedList.Mvc,但是2014年开始,作者将项目名称改名字为“X.PagedList.Mvc”),用这个插件的话会非常便利,大家可以试试,接下来将给大家讲下如何安装这个NuGet插件。ASP.NET MVC 5使用X.PagedList.Mvc进行分页教程(原名为PagedList.Mvc)
1、工具——NuGet 程序包管理器——管理解决方案的 NuGet 程序包
2、 搜索“X.PagedList.Mvc”,并安装、引用
3、\Controllers\UserController.cs 后台代码基本用法:
?
1
2
3
4
5
6
7
8
9
10
11
12
using PagedList
// GET: User/1
public ActionResult Index(int page = 1)
{
const int pageSize = 10
//List<User>users = (from u in db.Users
// orderby u.Id descending
// select u).Skip((page - 1) * pageSize).Take(pageSize).ToList()
//return View(users)
var iUsers = db.Users.OrderBy(p =>p.Id).ToPagedList(page, pageSize)
return View(iUsers)
}
4、\Views\User\Index.cshtml 前台代码基本用法:
?
1
2
3
4
5
6
7
8
@using PagedList
@using PagedList.Mvc
<table class=“table”>
xxxx
xxxx
xxxx
</table>
@Html.PagedListPager((IPagedList)Model, page =>Url.Action(“Index”, new { page }))
5、\App_Start\RouteConfig.cs 配置一下:
?
1
2
3
4
5
6
7
8
9
10
11
12
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”)
routes.MapRoute(
name: “Default”,
url: “{controller}/{action}/{page}”,
defaults: new { controller = “User”, action = “Index”, page = UrlParameter.Optional }
)
}
}
6、效果图:
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)