Automapper и MvcPager3 работают вместе - PullRequest
3 голосов
/ 16 января 2012

Я хочу добавить пагинацию к одному из моих просмотров, используя 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 имеет конструктор, который принимает список элементов. Поскольку autopper собирается сделать это для меня, я подумал, что смогу передать значение null, но это не работает.

Кто-нибудь имеет опыт использования этих двух компонентов в гармонии?

Спасибо

Edit:

Найдена альтернатива MvcPager под названием PagedList. Это намного лучше, потому что у него есть класс StaticPagedList, который вы можете использовать для данных, которые уже были разбиты на страницы.

Ответы [ 2 ]

3 голосов
/ 16 января 2012

Вы можете разбить модель представления на страницы после сопоставления:

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 голос
/ 05 мая 2013

Кроме того, вы можете сначала разбить на страницы и затем на карту, используя 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);

Я сделал это, потому что я не хотел перечислять все объекты, чтобы перейти на страницу позже.

Основано на этой хорошей записи .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...