基类的自定义地图'使用AutoMapper的属性

时间:2015-08-04 17:42:07

标签: c# mapping automapper

我有以下型号:

public class BaseEntity
{
    public DateTime CreatedDate { get; set; }
    public DateTime ModifiedDate { get; set; }
}

public class Child1 : BaseEntity { }

public class Child2 : BaseEntity { }

日期以UTC格式写入我的数据库,但当我将它们拉入视图模型时,我希望日期以当地时间显示。所以这就是我的尝试:

Mapper.CreateMap<BaseEntity, BaseViewModel>()
    .ForMember(e => e.CreatedDate, b => b.MapFrom(x => DateHelper.ConvertToLocalTimeZone(x.CreatedDate)))
    .ForMember(e => e.ModifiedDate, b => b.MapFrom(x => DateHelper.ConvertToLocalTimeZone(x.ModifiedDate)));

这不起作用。它只适用于我为子类显式创建地图,就像这样,我认为这是不合理的:

Mapper.CreateMap<Child1, Child1ViewModel>()
    .ForMember(e => e.CreatedDate, b => b.MapFrom(x => DateHelper.ConvertToLocalTimeZone(x.CreatedDate)))
    .ForMember(e => e.ModifiedDate, b => b.MapFrom(x => DateHelper.ConvertToLocalTimeZone(x.ModifiedDate)));

我做了一些搜索,但没有找到似乎在基类处理自定义映射的解决方案。

提前致谢。

1 个答案:

答案 0 :(得分:1)

这样的显示逻辑应该在您的视图中完成,而不是在视图模型中完成。将您的视图模型保持为DateTime,然后根据您的视图技术,您可以创建模板化帮助器或HtmlHelper扩展,以标准化日期的显示方式。