C#Automapper忽略属性时为空

时间:2012-06-11 15:10:54

标签: c# .net asp.net-mvc automapper

我正在我的AccountEditViewModel(用于编辑用户的视图模型)和我的User(表示数据库中的用户的数据模型)之间创建自动映射。如果填写了密码字段,我想加密该密码并存储它,但如果它在我想要保留旧密码时为空。我已经尝试了下面的代码,但它是错误的,model.Ignore()不返回字符串值。解决这个问题的最佳方式是什么?我可以使用ForMember()方法完成此操作,还是需要自定义解析程序?

Mapper.CreateMap<AccountEditViewModel, User>()
                .ForMember(model => model.Password, model => model.MapFrom(user => user.Password != null ? EncryptPassword(user.Password) : model.Ignore()));

1 个答案:

答案 0 :(得分:8)

试试这个:

Mapper.CreateMap<AccountEditViewModel, User>()
.ForMember(model => model.Password, model => model.Ignore()) 
.AfterMap((src, dst) =>
                    {
                        if (src.Password != null)
                            dst.Password= EncryptPassword(src.Password);

                    });