我想使用MvcPager3将分页添加到我的一个视图中。这很简单,只是我已经使用AutoMapper将我的模型映射到一个简化的视图模型。
List<Call> calls = (from p in db.Calls orderby p.ID descending select p).ToList();
var viewModel = new List<CallListItem>();
Mapper.Map(calls, viewModel);
return View(viewModel);
我认为这可能就像更换这一行一样简单
var viewModel = new List<CallListItem>();
用这个
var viewModel = new PagedList<CallListItem>();
但是PagedList有一个构造函数,它接受一个项目列表。因为automapper将为我做这个,我以为我可以传递null,但它不起作用。
任何人都有使用这两个组件的经验吗?
由于
编辑:
找到一个名为PagedList的MvcPager替代品。它更好,因为它有一个StaticPagedList类,您可以将其用于已经被分页的数据。
答案 0 :(得分:3)
您可以在映射后对视图模型进行分页:
var calls = (from p in db.Calls orderby p.ID descending select p).ToList();
var viewModel = Mapper
.Map<IEnumerable<Call>, IEnumerable<CallListItem>>(calls)
.ToPagedList(currentPage, pageSize);
return View(viewModel);
答案 1 :(得分:1)
或者,您可以先使用StaticPagedList进行分页,然后进行映射。 这对我有用:
var calls = (from p in db.Calls orderby p.ID descending select p).ToPagedList();
var viewModel = Mapper.Map<IEnumerable<CallListItem>>(calls);
return new StaticPagedList<CallListItem>(viewModel, calls);
我之所以这样做,是因为我不想列出所有对象以便稍后翻页。
基于这个不错的post。