Automapper和MvcPager3一起工作
本文关键字:工作 一起 MvcPager3 Automapper | 更新日期: 2023-09-27 18:20:26
我想使用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类,可以用于已经分页的数据。
您可以在映射后对视图模型进行分页:
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);
或者,您可以先分页,然后使用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);
我这样做是因为我不想列出所有的对象以便以后分页。
基于这个不错的帖子。