6

我有一个使用 fluentNhibernate 和 Asp.net MVC 的网站。我有一个编辑视图,允许用户编辑该记录(对象)的 10 个属性中的 8 个。当您提交表单并绑定模型时,这两个不可编辑的字段会作为空字符串或默认的 DateTime 值返回到视图模型中,具体取决于属性的类型。

因为我还使用 AutoMapper 将我的视图模型映射到我的域实体,所以我不能只从数据库中加载我的对象的新副本并手动设置 2 个缺失的属性。保留那些我不想编辑的字段的最佳方法是什么?

一种可行的方法是将值保留在我的视图上隐藏的输入字段中。这行得通,但感觉很恶心。我感谢任何建议。我的 AutoMapper 中有没有办法配置这个所需的功能?

更新: 好的,所以我想我不是要忽略这些字段,而是要确保我不会保留 null 或空字符串值。忽略 AutoMapper 中的字段就是这样做的,当我尝试在保存到我的存储库之前将它们映射时,它们会被忽略并且为空。

4

3 回答 3

2

您可以告诉 Automapper 忽略 2 个属性:

Mapper.CreateMap<Source, Destination>()
.ForMember(dest => dest.SomeValuefff, opt => opt.Ignore());

可能的相关问题

于 2009-08-13T22:24:48.633 回答
2

asp.net mvc DefaultModelBinder 是可扩展的,您可以覆盖它来创建自己的绑定模式。但这将涉及比两个“隐藏的输入字段”更多的工作,在我看来,这并不是那么严重。

于 2009-08-14T00:53:26.307 回答
0

您可以使用也接受 TEntity 的 AutoMapper.Map 重载吗?

entity = Mapper.Map(viewmodel, entity);

只要您的视图模型上没有属性,它就不会更改实体上的值。它接受传入的实体,并且仅将视图模型中的属性应用回实体。

于 2011-12-29T20:59:30.790 回答