我正在处理MVC 4项目并尝试将KeyValue列表中的值转换为可为空的DateTime。我已经使用的映射以下行(我不包括其他属性也有不少)Automapper使用不返回空值
.ForMember(d => d.Deadline, m => m.ResolveUsing<DeadlineResolver>())
我的解析器是这样的:
public class DeadlineResolver : ValueResolver<Booking, DateTime?>
{
protected override DateTime? ResolveCore(Booking source, ResolutionResult resolutionResult)
{
KeyValue keyValue = source.KeyValues.FirstOrDefault(k => k.Key.KeyId == "DEADLINE");
return (keyValue != null) ? DateTime.Parse(keyValue.Value) : (DateTime?)null;
}
}
期限的值,它是定义如下所示不会返回为空,而是返回DateTime.MinDate。当我在视图中绑定结果时,我需要它为空,以便在有日期时仅显示值。
public DateTime? Deadline { get; set; }
如何使这些值空但不超过该值映射后找分钟日期和设置为null(临时劈我已经到位,使代码运行)?
什么是KeyValue?这是你定义的类吗? – Graham 2013-03-19 18:21:18
您是否尝试过允许空目的地值? 'Mapper.Initialize(c => c.AllowNullDestinationValues = true);' – Mightymuke 2013-03-19 23:54:42
KeyValue是一个业务层对象,所以我不知道它的全部用途,因为我专门在UI层上工作,包括从业务层到UI层写入映射,但如果您认为它的重要@Graham,我可以将它的详细信息发布清楚。 – 2013-03-20 08:50:21