我正在尝试改进我的MVC 3模型和视图(主要是CRUD)之间的数据流。我采用了使用ViewModels和FormModels的方法。我的ViewModel包含表示视图FormData,DropDownLists等所需的一切.FormModel只包含表单提交的FormData字段,并且是更新记录所必需的。
我的问题是我可以使用AutoMapper将UserDto信息映射到我的ViewModel中的FormData字段吗?
显然我的映射只是两个对象之间的映射而不是属性的对象,但我尝试使用'.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; }
}
非常感谢任何帮助。
答案 0 :(得分:5)
您需要创建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)));