5

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

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

1 回答 1

10

试试这个:

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

                    });
于 2012-06-11T15:18:11.913 回答