Automapper-映射字段并使用会话变量进行计算.怎样
本文关键字:变量 计算 怎样 会话 映射 字段 Automapper- | 更新日期: 2023-09-27 18:19:47
映射字段时,有没有方法将参数传递给automapper?
我有一个名为的模型属性
public double Meters {get; set;}
我使用automapper将这些仪表转换为KILOMETERS或MILES,这取决于基于用户偏好生成的会话变量;
Session["Factor"] = Units.KM;
问题是,当我使用自动映射器时,我可以进行操作
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
您需要从HttpContext:获得它
Mapper.CreateMap<Distance, DistanceViewModel>()
.ForMember(a => a.Distance, exp => exp.ResolveUsing(p => p.Meters * (double)HttpContext.Current.Session["Factor"]))
不要忘记包含System.Web命名空间。