我有一个导出方法,该方法从Ajax调用中获取数据,然后通过相关的ID-Class映射它,并使用AutoMapper将对象映射到类。但是,每当我尝试在下面的代码中运行时,都会显示“ Automapper缺少类型映射配置或不支持的映射”。我在这里想念的是什么?
[HttpPost]
public ExportResultExcel ExportReport(int Id, object obj)
{
var result = new BaseResult<ExportResultExcel>();
var reportObject = _reportHelper.GetObjectClass(Id);
var propertyList = _reportHelper.GetPropertiesOfClass(reportObject);
switch (Id)
{
case 1:
Mapper.Initialize(cfg =>
{
cfg.CreateMap<object, CusMonthlyDiscountReportModel>();
});
List<CusMonthlyDiscountReportModel> model = Mapper.Map<List<CusMonthlyDiscountReportModel>>(obj);
var stream = exportService.GenerateDocumentReport(model, propertyList);
result.Result = new ExportResultExcel
{
Content = stream,
ContentType = ExportService.GetContentType(".xlsx"),
FileName = $"MonthlyCustomerInvoicesReport_{DateTime.Now}.xlsx"
};
break;
case 2:
//..........
default:
break;
}
return result.Result;
}
任何帮助将不胜感激。谢谢
编辑1
我没有将数据作为列表获取,然后为他们创建了MapDynamicList来映射对象,但仍然出现相同的错误。
public ExportResultExcel ExportReport(int Id, List<object> data)
{
switch (Id)
{
case 1:
var model = ReportHelper.MapDynamicList<CusMonthlyDiscountReportModel>(data);
这是我的MapDynamicList函数
public static List<T> MapDynamicList<T>(IEnumerable<object> obj)
{
var config = new MapperConfiguration(c => c.CreateMissingTypeMaps = true);
var mapper = config.CreateMapper();
var newModel = obj.Select(mapper.Map<T>).ToList();
return newModel;
}
您可以这样使用AutoMapper:
public static List<T> MapDynamicList<T,TT>(List<TT> obj)
{
var config = new MapperConfiguration(x =>
{
x.CreateMap<TT, T>();
});
var mapper = config.CreateMapper();
var newModel = mapper.Map<List<T>>(obj);
return newModel;
}
您可以这样发布模型:
[HttpPost]
public ExportResultExcel ExportReport(int Id, List<MyModel> obj)
您可以像这样使用MapDynamicList:
var model = ReportHelper.MapDynamicList<CusMonthlyDiscountReportModel, MyModel>(data);