gpt4 book ai didi

c# - 传递给 MVC Controller 的 id 总是映射为 0

转载 作者:太空宇宙 更新时间:2023-11-03 22:32:54 25 4
gpt4 key购买 nike

我有一个充满车辆数据的数据库。我的 API 可用于返回所有车辆的列表,但不能返回单个车辆。下面列出了 Controller 代码以及我来自 Startup.Configure

的 mvc 映射

为什么无论我使用什么参数(比如 ID 为“27”)它总是映射为 0?

[HttpGet("{id:int}")]
public IActionResult GetVehicle(int vehicleId_)
{
try{
var specificVehicle = _vehicleRepository.GetVehicleById(vehicleId_);

if (specificVehicle == null) return NotFound();
return Ok(_mapper.Map<VehicleViewModel>(specificVehicle));
}
catch(Exception ex)
{
_logger.LogError($"Failed to retrieve specific vehicle : {ex}");
return BadRequest("An Error Ocurred retrieving a specific vehicle.
Check Logs.");
}
}

来自 Startup.Configure

app.UseMvc( config =>{
config.MapRoute(
name : "Default",
template: "{controller}/{action}/{id?}",
defaults: new {controller = "Home", action = "Index"}
);

最佳答案

Why is it that whatever parameter I use (say '27' for the id) it is always mapped as 0?

路由模板中的参数名称需要与 Action 中的参数名称相匹配。

您当前在路线模板中的名称 {id:int} 与操作中的 int vehicleId_ 不同。

[HttpGet("{id:int}")]
public IActionResult GetVehicle(int id) {
try{
var specificVehicle = _vehicleRepository.GetVehicleById(id);

if (specificVehicle == null) return NotFound();
return Ok(_mapper.Map<VehicleViewModel>(specificVehicle));
}
catch(Exception ex)
{
_logger.LogError($"Failed to retrieve specific vehicle : {ex}");
return BadRequest("An Error Ocurred retrieving a specific vehicle.
Check Logs.");
}
}

引用 Routing to controller actions in ASP.NET Core

关于c# - 传递给 MVC Controller 的 id 总是映射为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56536473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com