AutoMapper - mapping-Kind-Sammlungen im viewmodel
Habe ich ein viewmodel, muss die Anzeige eines bestimmten IEnumerable
Feld als Semikolon-getrennt textbox. Zuerst habe ich daran gedacht, mit DefaultModelBinder
zu verwandeln, aber ich hatte Mühe zu denken, wie es zu erreichen in beide Richtungen (dto <-> viewmodel).
Spitznamen ist der Bereich, den ich versuche zu zeigen als ein Textfeld, durch Semikolon getrennt.
public class Parent
{
public IEnumerable<Child> Children { get; set; }
}
public class Child
{
public IEnumerable<string> Nicknames { get; set; }
}
Also habe ich beschlossen, zu versuchen, AutoMapper, ich habe zwei ViewModels:
public class ParentViewModel
{
public IEnumerable<ChildViewModel> Children { get; set; }
}
public class ChildViewModel
{
public string Nicknames { get; set; }
}
Dann habe ich Zuordnungen, wie diese für die Kinder (entfallen, die andere-Wege-Umstellung für die Kürze)
Mapper.CreateMap<Child, ChildViewModel>().ForMember(
d => d.Nicknames, o => o.ResolveUsing<ListToStringConverter>().FromMember(s => s.Nicknames);
Dann für die Eltern, erstellt eine naive Karte (wieder entfallen, die andere-Weise)
Mapper.CreateMap<Parent, ParentViewModel>();
Ich wirklich erwartet, dass das Kind Zuordnungen erfolgen automatisch, aber Sie wissen nicht, ich habe bereits erstellte zu viel "richtigen" code zu lösen, um ein wirklich einfaches problem, das in jedem andere, einfachere/ältere nicht-MVC-Umfeld, würde ich mit einem vor langer Zeit 🙂 Wie kann ich Vorgehen und sagen, AutoMapper, verwandeln die Kinder, ohne zu schreiben eine andere "Kinder Mitglied resolver".
Habe ich overthought dies und gibt es einen einfacheren Weg?
Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
versuchen
Mapper.Map
auf die ElternChildViewModel
und dieParent
Child
undChildViewModel
new
- Schlüsselwort in der Deklaration einer Eigenschaft und jetzt funktioniert es wie erwartet. Danke!Fand diese Lösung https://stackoverflow.com/a/7555977/1586498, das funktioniert für mich:
Den
ToISet
Funktion definiert ist, im obigen link.Einfacher Beispiele 'einfach funktionieren' in LinqPad - also mehr Untersuchungen erforderlich.
Eine vollständige Auflistung der ein funktionierendes Programm: