我有我使用fluentNhibernate和Asp.net MVC其中一个站点。 我有一个编辑视图,其允许用户编辑属性10为该记录(对象)的8。 当您提交表单和模型结合,两个不可编辑的字段回来视图模型为空字符串或根据财产类型默认DateTime值。
因为我还使用AutoMapper映射我的视图模型我的域实体,我不能只从数据库中加载我的对象的新副本,并手动设置2个缺少的属性。 请告诉我要坚持,我不想编辑这些领域的最佳方法是什么?
这不工作的一种方式是坚持在我查看隐藏输入字段中的值。 这工作,但感觉恶心。 我明白任何建议。 有没有在我的AutoMapper的方式来配置此所需的功能?
更新:好了,我想我不是要忽视领域,我想确保我不坚持null或空字符串值。 忽略AutoMapper领域做到了这一点,他们都被忽略,并且是空的,当我试图映射之前保存到我的仓库。
在asp.net mvc的DefaultModelBinder是可扩展的,并且可以重写它来创建自己的绑定模式。 但是,这将涉及超过两个“隐藏输入字段”,这在我的角度来看,是不是总更多的工作。
你可以告诉Automapper忽略2个属性:
Mapper.CreateMap<Source, Destination>()
.ForMember(dest => dest.SomeValuefff, opt => opt.Ignore());
可能相关的问题 。
您可以使用AutoMapper.Map重载也接受TEntity?
entity = Mapper.Map(viewmodel, entity);
只要你没有在您的视图模型的属性,它不会改变你的实体值。 它发生在传递的实体,然后从视图模型回实体仅适用属性。
文章来源: How do you ignore/persist values in MVC when your view-model doesn't have as many fields as your domain model?