AutoMapper可以将对象映射到相同类型的模型属性

Cra*_*gly 2 automapper asp.net-mvc-3

我试图改进我的MVC 3模型和视图(主要是CRUD)之间的数据流.我采用了使用ViewModels和FormModels的方法.我的视图模型包含了一切可能需要代表认为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; }
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激.

ego*_*rry 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)));
Run Code Online (Sandbox Code Playgroud)