我有这两个视图模型:
public class SettingsViewModel
{
public string UserId { get; set; }
public PersonalViewModel Personal { get; set; }
}
public class PersonalViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
在实现这些视图模型后,我用automapper创建了一个地图:
Mapper.CreateMap<User, PersonalViewModel>()
.ForMember(vm => vm.Birthday, m => m.MapFrom(
u => (u.Birthday.HasValue) ? u.Birthday.Value.ToString("dd.MM.yyyy") : DateTime.Now.ToString("dd.MM.yyyy")));
Mapper.CreateMap<User, SettingsViewModel>()
.ForMember(vm => vm.UserId, m => m.MapFrom(
u => u.Id));
var viewModel = Mapper.Map<User, SettingsViewModel>(user);
现在我有一个问题,我的SettingsViewModel
中的属性Personal
为null。如何组合我的两个映射?如何使用用户对象中的数据填充Personal
属性?在我的用户对象中,有FirstName
和LastName
的属性。
您可以这样设置映射:
Mapper.CreateMap<User, SettingsViewModel>()
.ForMember(vm => vm.UserId, m => m.MapFrom(u => u.Id))
.ForMember(vm => vm.Personal, opt => opt.MapFrom(u => u));
这里,我们说从User
对象本身映射Personal
属性指定此选项时,User
的映射→将自动使用PersonalViewModel
。
示例:https://dotnetfiddle.net/YJnPDq