映射字段时有没有办法将参数传递给automapper?
我有一个名为:
的模型属性public double Meters {get; set;}
我使用automapper将这些米转换为KILOMETERS或MILES,具体取决于根据用户的偏好生成的Session变量;
Session["Factor"] = Units.KM;
问题在于,当我使用automapper时,我可以执行此操作
Mapper.CreateMap<Distance, DistanceViewModel>()
.ForMember(a => a.Distance, exp => exp.ResolveUsing(p => p.Meters * (double)Session["Factor"]))
因为我无法从我的MVC项目中的Automapper帮助文件访问Session对象。
有人遇到过这个问题吗?什么是实现这一目标的最佳方式?
先谢谢。
编辑:我尝试了答案中的方法,但是为空。
public class EffortInPaceProfile : Profile
{
protected override void Configure()
{
var factor = (double)HttpContext.Current.Session["DistanceFactor"];
Mapper.CreateMap<Model, ViewModel>()
.ForMember(e => e.TotalMeters, exp => exp.ResolveUsing(p => p.TotalMeters * factor));
}
}
Line 210: var factor = (double)HttpContext.Current.Session["DistanceFactor"]; //NULL
答案 0 :(得分:2)
你需要从HttpContext中获取它:
Mapper.CreateMap<Distance, DistanceViewModel>()
.ForMember(a => a.Distance, exp => exp.ResolveUsing(p => p.Meters * (double)HttpContext.Current.Session["Factor"]))
不要忘记包含System.Web命名空间。