Идентификатор, передаваемый контроллеру MVC, всегда отображается как 0 - PullRequest
1 голос
/ 11 июня 2019

У меня есть база данных, полная данных об автомобиле. Мой API можно использовать для возврата списка всех транспортных средств, но не одного транспортного средства. Код контроллера указан ниже вместе с моим отображением mvc от Startup.Configure

Почему любой параметр, который я использую (скажем, 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"}
);

1 Ответ

3 голосов
/ 11 июня 2019

Почему любой параметр, который я использую (скажем, «27» для идентификатора), всегда отображается как 0?

Имя параметра в шаблоне маршрута необходимосопоставьте имя параметра в действии.

В настоящее время у вас есть разные имена {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.");
     }
}

Ссылка Маршрутизация к действиям контроллера в ASP.NET Core

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...