我使用 ASP.NET Core/EF 构建了一个 API Web 应用程序。我已经创建了所有模型、控制器和界面,并且能够进行
GET, POST, PUT, and DELETE
调用。但是,当我在任何控制器中执行 GET
调用时......ID 不会按数字顺序返回。例如,类别控制器如下所示:
在哪里/如何检查有关发生此情况的原因的日志或信息。我该如何实现排序方法来解决这个问题?
我可以成功调用所有 API 端点并执行
GET, POST, PUT, DELETE
的功能,但我的 ID 不正确。每个控制器(Pokemon, Category, Owner,
等)的 ID 均按数字顺序排列,但它们不是从 1 开始。
获取代码
public IActionResult GetCategories()
{
var categories = _mapper.Map<List<CategoryDto>>
(_categoryRepository.GetCategories());
if (!ModelState.IsValid)
return BadRequest(ModelState);
return Ok(categories);
}
正如我在上面的评论中告诉你的,你应该在将结果返回到视图之前对其进行排序。这就是 MVC 模式的整个概念,您在控制器中完成工作以准备结果并将其发送到仅显示它的视图
public IActionResult GetCategories()
{
if (!ModelState.IsValid)
return BadRequest(ModelState);
var data = _categoryRepository.GetCategories().OrderBy(x => x.Id);
var categories = _mapper.Map<List<CategoryDto>>(data);
return Ok(categories);
}
如您所见,在开始对数据库进行任何工作之前,我还移动了对 ModelState 的检查。如果任何数据库或映射相关的问题出现问题,适当的 try/catch 处理程序也应该被认为是安全的。