Я пытаюсь преобразовать в использование ViewModels в моем приложении mvc4. Я успешно переключил свои действия POST, чтобы использовать viewmodels, но в приведенном ниже примере я пытаюсь использовать как autoapper, так и PagedList в действии.Использование automapper с PagedList.mvc
Я сделал класс, называемый AutoMapperConfiguration (ниже), чтобы избежать добавления отображения по всей программе:
public class AutoMapperConfiguration
{
public static void Configure()
{
ConfigureItemMapping();
}
public class PagedListConverter : ITypeConverter<PagedList<Item>,PagedList<ItemListViewModel>>
{
public PagedList<ItemListViewModel> Convert(ResolutionContext context)
{
var model = (PagedList<Item>)context.SourceValue;
var vm = model.Select(m => Mapper.Map<Item, ItemListViewModel>(m)).ToPagedList(model.PageNumber,model.PageSize);
return new PagedList<ItemListViewModel>(vm,model.PageNumber,model.PageSize);
}
}
private static void ConfigureItemMapping()
{
Mapper.CreateMap<ItemListViewModel,Item>();
Mapper.CreateMap<PagedList<Item>, PagedList<ItemListViewModel>>()
.ConvertUsing<PagedListConverter>();
}
}
выше вызывается из Global.asax
protected void Application_Start()
{
...
AutoMapperConfiguration.Configure();
...
}
От контроллера, я пытаясь отправить список элементов в itemViewModel из элемента «Модель» в виде списка подкачки. Здесь я полностью застрял. Излишне говорить, что нижеследующее не работает.
[HttpGet]
public ActionResult Index(int page = 1)
{
//Show 10 items per page for the Admin
int pageSize = 10;
var items = new PagedList<Item>(
db.Items.OrderBy(i => i.ItemId),page,pageSize);
var vm = new ItemListViewModel();
Mapper.Map<PagedList<Item>, PagedList<ItemListViewModel>>(items);
return View(vm);
}
Ошибка в настоящее время рассматривается является:
Missing конфигурация типа карты или неподдерживаемый отображение.
типы карт: Предмет -> ItemListViewModel Project.Models.Item -> Project.ViewModels.ItemListViewModel
Путь назначения: ItemListViewModel
Он бросают на следующей строке в PagedListConverter
var vm = model.Select(m => Mapper.Map<Item, ItemListViewModel>(m)).ToPagedList(model.PageNumber,model.PageSize);
Любая помощь будет оценена по достоинству.
Привет Андрей, я смотрел на ваш пример кода и внесены соответствующие изменения, чтобы проверить. Но я получаю сообщение об ошибке в PagedListConverter (в исходном сообщении). – ricky89
@ user2317406: Я думаю, что у вас есть ваше отображение назад: вам нужно от «Item» до «ItemListViewModel». Я обновил ответ, дайте мне знать, если это поможет. –
Я думаю, что есть проблема со следующим: var vm = new ItemListViewModel(); в контроллере. Если это не нужно также преобразовывать в PagedList? – ricky89