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类,可以用于已经分页的数据。

Automapper和MvcPager3一起工作

您可以在映射后对视图模型进行分页:

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);

我这样做是因为我不想列出所有的对象以便以后分页。

基于这个不错的帖子。