Я надеялся, что вы сможете помочь мне с вопросом Automapper, который у меня есть в тестовом приложении ASP.NET MVC, которое я разрабатываю.AutoMapper Complex ViewModel properties
У меня был взгляд вокруг, и я не мог найти ничего подобного, чего я пытаюсь достичь с помощью вложенных ViewModels.
В принципе, у меня есть эти два домена модели ...
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; }
}
}
И ..
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;
}
}
}
И у меня есть эти 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; }
}
}
И ...
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; }
}
}
Я хочу вернуть ContactViewModel в свой вид с именем, заполненным свойством Name, которое заполняет объект Contact Contact.
У меня есть этот код в мой контроллер ...
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);
Это где я бегу в проблемы, моя собственность Имя никогда не заполняется.
Причина для меня выбор, чтобы спроектировать мое приложение таким образом, это потому, что мои взгляды состоят из пользовательских шаблонов модели, так что я могу последовательно оказывать объекты NameViewModel без повторения кода, так как в этом простом примере ...
@model Test.WebUI.Models.NameViewModel
First
@Model.Name_Forename
Last
@Model.Name_Surname
Если кто-нибудь может объяснить мне, как я должен заполнить объект NameViewModel ContactViewModel с помощью AutoMapper, я был бы очень благодарен.
Спасибо. Джим
Спасибо за это Дарин, не могли бы вы посоветовать, как я правильно создаю свойство Name? А также почему это сопоставление автоматически выполняется. Jim – James