mvc4 응용 프로그램에서 ViewModels를 사용하여 변환하려고합니다. 내가 성공적으로 내 POST 작업을 사용하여보기 모델을 사용 전환 한 있지만 아래 예제에서는 automapper 및 PagedList 작업에서 사용하려고합니다.PagedList.mvc와 함께 automapper 사용
내가 응용 프로그램 전체 매핑을 추가 피하기 위해 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();
...
}
에서 호출 항목 목록을 모델 목록에서 itemListModel에 보내려고합니다. 이것이 내가 완전히 붙어있는 곳입니다. 말할 필요도없이 아래는 작동하지 않습니다. 지금은 볼되고
[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);
}
오류는 다음과 같습니다
누락 형태 맵 구성이나 지원되지 않는 매핑.
매핑 유형 : 아이템 -> ItemListViewModel Project.Models.Item -> Project.ViewModels.ItemListViewModel
대상 경로 : 그것은 PagedListConverter
에 다음 줄에 발생되는 ItemListViewModel
var vm = model.Select(m => Mapper.Map<Item, ItemListViewModel>(m)).ToPagedList(model.PageNumber,model.PageSize);
도움이 될만한 정보가 있습니다.
안녕 앤드류와 정적 클래스
Mapper
을 대체, 당신의 예제 코드를 쳐다 보면서 테스트 따라 개정했다. 하지만 원래 게시물에서 PagedListConverter에 오류가 발생했습니다. – ricky89@ user2317406 : 매핑이 거꾸로되어 있다고 생각합니다. 'Item'에서'ItemListViewModel '까지 필요합니다. 답변을 업데이트했습니다. 도움이되는지 알려주세요. –
다음과 같은 문제가 있다고 생각합니다 : var vm = new ItemListViewModel(); 컨트롤러에서. 이 또한 PagedList로 변환 할 필요가 없습니까? – ricky89