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

Automapper-映射字段并使用会话变量进行计算.怎样

您需要从HttpContext:获得它

 Mapper.CreateMap<Distance, DistanceViewModel>()
       .ForMember(a => a.Distance, exp => exp.ResolveUsing(p => p.Meters * (double)HttpContext.Current.Session["Factor"]))

不要忘记包含System.Web命名空间。