Tengo un modelo de vista que debe mostrar un determinado campo IEnumerable
como cuadro de texto separado por punto y coma. Al principio pensé en usar DefaultModelBinder
para transformarlo, pero tuve problemas para pensar cómo lograrlo en ambas direcciones (dto < -> viewmodel).AutoMapper: asignación de colecciones secundarias en el modelo de vista
Apodos es el campo que trato de mostrar como un cuadro de texto separado por punto y coma.
public class Parent
{
public IEnumerable<Child> Children { get; set; }
}
public class Child
{
public IEnumerable<string> Nicknames { get; set; }
}
Así que decidieron probar AutoMapper, creé dos ViewModels:
public class ParentViewModel
{
public IEnumerable<ChildViewModel> Children { get; set; }
}
public class ChildViewModel
{
public string Nicknames { get; set; }
}
A continuación, he creado asignaciones, como esto para los niños (se omite la conversión otras vías por razones de brevedad)
Mapper.CreateMap<Child, ChildViewModel>().ForMember(
d => d.Nicknames, o => o.ResolveUsing<ListToStringConverter>().FromMember(s => s.Nicknames);
Entonces, para el padre, creó un mapa ingenua (de nuevo, se omite la otra vía)
Mapper.CreateMap<Parent, ParentViewModel>();
Realmente esperaba que las asignaciones de elementos secundarios se realizaran automáticamente, pero no es así, ya he creado demasiado código "adecuado" para resolver un problema realmente simple que en cualquier otro entorno no MVC más simple/antiguo, hacerse con mucho tiempo atrás :) ¿Cómo puedo proceder y decirle a AutoMapper que transforme los niños sin escribir otra "resolución de miembros hijos"?
¿He pensado demasiado sobre esto y hay una manera más simple?
¡Gracias!
Sí, tengo todo eso (4 disposiciones: niño <-> childView, padre <-> parentView), pero los elementos secundarios no se convierten cuando llamo 'Mapper. Map' en el padre – Madd0g
tiene los mismos nombres para las propiedades en 'ChildViewModel' y' Parent' – Rafay
No, no tiene el mismo tipo de propiedades en 'Child' y' ChildViewModel' – Rafay