Может ли AutoMapper сопоставить объект со свойством модели того же типа - PullRequest
2 голосов
/ 12 октября 2011

Я пытаюсь улучшить поток данных между моей моделью MVC 3 и представлениями (в основном, CRUD). Я принял подход использования ViewModels и FormModels. Моя ViewModel содержит все необходимое для представления представления FormData, DropDownLists и т. Д. FormModel просто содержит поля FormData, которые отправляются формой и необходимы для обновления записи.

Мой вопрос: могу ли я использовать AutoMapper для сопоставления информации UserDto с моим полем FormData в моей ViewModel?

Очевидно, что мое приведенное ниже сопоставление представляет собой только сопоставление между двумя объектами, а не объектом к свойству, но я попытался использовать параметры отображения «.ForMember», но они опять-таки для членов объекта, а не объекта для члена объекта. Я также посмотрел на конвертеры нестандартного типа, но не уверен, что это правильный путь.

Mapper.CreateMap<UserDto, UserViewModel>();
Mapper.CreateMap<UserViewModel, UserDto>();

public class UserViewModel
{
    public User FormData { get; set; }

    // DropDownLists

    // Other view specific data

}

public class UserFormModel
{
    public int UserId { get; set; }

    [Required]
    public string Name { get; set; }

    [Required]
    public string Age { get; set; }

    [Required]
    public string Email { get; set; }
}

Любая помощь будет высоко ценится.

1 Ответ

5 голосов
/ 12 октября 2011

Вам необходимо создать карту с типом свойства FormData, а затем указать AutoMapper использовать эту карту.

(Следующее, скорее всего, не скомпилируется; я нахожусь в процессе воссоздания моей рабочей машины иработает из памяти).

Mapper.CreateMap<UserDto, User>(); // set up property mapping

Mapper.CreateMap<UserDto, UserViewModel>()
.ForMember(vm => vm.FormData, map => map.MapFrom(dto => Mapper.Map<UserDto, User>(dto)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...