如何在 ASP.NET WEB API 中按日期时间格式参数过滤数据
How to filter data by datetime format parameter in ASP.NET WEB API
我正在尝试获取基于 DateTime 参数的数据列表。但它不起作用,因为我收到错误 - AutoMapper.AutoMapperMappingException:缺少类型映射配置或不支持的映射。但是,当我尝试基于 int ID 参数检索数据时,它是 working.Any 如何解决问题的想法?
这是控制器代码:
[HttpGet("{pubdate}")]
public async Task<ActionResult<ToDoListDto>> GetTodListOfDates(DateTime pubdate)
{
var todo = await _toDoListRepository.GetIncomingToDoAsync(pubdate);
if (todo == null)
{
return NotFound();
}
return Ok(_mapper.Map<ToDoListDto>(todo));
}
[HttpGet("{id}")]
public async Task<ActionResult<ToDoListDto>> GetTodList(int id)
{
var todo = await _toDoListRepository.GetSpecificTodoAsync(id);
if (todo == null)
{
return NotFound();
}
return Ok(_mapper.Map<ToDoListDto>(todo));
}
我的存储库代码:
public async Task<IEnumerable<ToDoList>> GetIncomingToDoAsync(DateTime dateTime)
{
return await _context.ToDoLists.Where(c => c.StartDate == dateTime).ToListAsync();
}
public async Task<ToDoList?> GetSpecificTodoAsync(int taskId)
{
return await _context.ToDoLists.Where(c => c.Id == taskId).FirstOrDefaultAsync();
我的待办事项模型:
public class ToDoListDto
{
public int Id { get; set; }
public string? Title { get; set; }
public string? Description { get; set; }
public DateTime StartDate { get; set; }
}
您的日期时间端点启动的映射正在尝试映射一个 IEnumerable<ToDoListDto>
,而您的整数端点正在映射一个 ToDoListDto
。
如果您想单独映射集合中的每个项目(这是整数 ID 端点所做的),请将日期时间端点中的映射更改为以下内容:
return Ok(todo.Select(item => _mapper.Map<ToDoListDto>(item));
或者,如果你想映射整个集合,你必须明确并将类型指定为 IEnumerable<ToDoListDto>
:
return Ok(_mapper.Map<IEnumerable<ToDoListDto>>(todo));
我正在尝试获取基于 DateTime 参数的数据列表。但它不起作用,因为我收到错误 - AutoMapper.AutoMapperMappingException:缺少类型映射配置或不支持的映射。但是,当我尝试基于 int ID 参数检索数据时,它是 working.Any 如何解决问题的想法?
这是控制器代码:
[HttpGet("{pubdate}")]
public async Task<ActionResult<ToDoListDto>> GetTodListOfDates(DateTime pubdate)
{
var todo = await _toDoListRepository.GetIncomingToDoAsync(pubdate);
if (todo == null)
{
return NotFound();
}
return Ok(_mapper.Map<ToDoListDto>(todo));
}
[HttpGet("{id}")]
public async Task<ActionResult<ToDoListDto>> GetTodList(int id)
{
var todo = await _toDoListRepository.GetSpecificTodoAsync(id);
if (todo == null)
{
return NotFound();
}
return Ok(_mapper.Map<ToDoListDto>(todo));
}
我的存储库代码:
public async Task<IEnumerable<ToDoList>> GetIncomingToDoAsync(DateTime dateTime)
{
return await _context.ToDoLists.Where(c => c.StartDate == dateTime).ToListAsync();
}
public async Task<ToDoList?> GetSpecificTodoAsync(int taskId)
{
return await _context.ToDoLists.Where(c => c.Id == taskId).FirstOrDefaultAsync();
我的待办事项模型:
public class ToDoListDto
{
public int Id { get; set; }
public string? Title { get; set; }
public string? Description { get; set; }
public DateTime StartDate { get; set; }
}
您的日期时间端点启动的映射正在尝试映射一个 IEnumerable<ToDoListDto>
,而您的整数端点正在映射一个 ToDoListDto
。
如果您想单独映射集合中的每个项目(这是整数 ID 端点所做的),请将日期时间端点中的映射更改为以下内容:
return Ok(todo.Select(item => _mapper.Map<ToDoListDto>(item));
或者,如果你想映射整个集合,你必须明确并将类型指定为 IEnumerable<ToDoListDto>
:
return Ok(_mapper.Map<IEnumerable<ToDoListDto>>(todo));