J'espérais que vous seriez en mesure de m'aider avec une question Automapper que j'ai dans un test ASP.NET MVC application que je développe.AutoMapper Complex ViewModel propriétés
J'ai regardé autour de moi et je n'ai rien trouvé qui ressemble à ce que j'essaie d'obtenir avec les ViewModels imbriqués.
Fondamentalement, je ces 2 modèles de domaine ...
namespace Test.Domain.Entities
{
public class Contact
{
[HiddenInput(DisplayValue = false)]
[Key]
public int ID { get; set; }
public Name Name { get; set; }
public string Contact_Landline { get; set; }
public string Contact_Mobile { get; set; }
[DataType(DataType.EmailAddress)]
public string Contact_Email { get; set; }
}
}
Et ..
namespace Test.Domain.Entities
{
public class Name : DisplayableModel
{
[HiddenInput(DisplayValue = false)]
[Key]
public int ID { get; set; }
public string Name_Forename { get; set; }
public string Name_Surname { get; set; }
public string GetFullName()
{
return Name_Forename + ' ' + Name_Surname;
}
}
}
Et je ces 2 ViewModels ...
namespace Test.WebUI.Models
{
public class ContactViewModel :
{
[HiddenInput(DisplayValue = false)]
[Key]
public int ID { get; set; }
public NameViewModel Name { get; set; }
public string Contact_Landline { get; set; }
public string Contact_Mobile { get; set; }
[DataType(DataType.EmailAddress)]
public string Contact_Email { get; set; }
}
}
Et ...
namespace Test.WebUI.Models
{
public class NameViewModel
{
[HiddenInput(DisplayValue = false)]
[Key]
public int ID { get; set; }
public string Name_Forename { get; set; }
public string Name_Surname { get; set; }
}
}
Je souhaite renvoyer ContactViewModel à ma vue avec la propriété Name remplie avec la propriété Name qui remplit l'objet de domaine Contact.
J'ai ce code dans mon contrôleur ...
Mapper.CreateMap<Name, NameViewModel>();
Mapper.CreateMap<Contact, ContactViewModel>();
var contact = Mapper.Map<Contact, ContactViewModel>(repository.Contact.Where(c => c.ID == id).Single());
return View(contact);
C'est là que je rencontre des problèmes, ma propriété Name est jamais peuplée.
La raison de me choisir de concevoir ma demande de cette façon est parce que mes vues sont composées de modèles de modèle personnalisé afin que je puisse rendre constamment des objets NameViewModel sans code de répéter, comme dans cet exemple simple ...
@model Test.WebUI.Models.NameViewModel
First
@Model.Name_Forename
Last
@Model.Name_Surname
Si quelqu'un peut m'expliquer comment je dois remplir l'objet NameViewModel du ContactViewModel avec AutoMapper, je serais vraiment reconnaissant.
Merci. Jim
Merci pour ce Darin, serais-tu capable de conseiller sur comment instancier correctement la propriété Name? Et aussi pourquoi cette cartographie est faite automatiquement. Jim – James