Asp-route-id не передает значение параметра

Эта таблица правильно заполняется с помощью @device.DeviceId, но не передает @device.DeviceId в действие контроллера.

<table border="1" cellpadding="10">
    @foreach (var device in @Model.Devices)
    {
        <tr>
            <td>@device.DeviceId</td>
            <td>@device.DeviceName</td>
            <td>
                <a asp-action="DeleteDevice"
                   asp-controller="Device"
                   asp-route-id="@device.DeviceId" asp->
                    Delete
                </a>
            </td>
        </tr>
    }
</table>

Подпись действия контроллера

public async Task<IActionResult> DeleteDevice(int deviceId)

Действие вызывается, но deviceId= 0.

Как обеспечить корректное передачу @device.DeviceId в действие?

Ответ 1

Либо измените действие контроллера на:

public async Task<IActionResult> DeleteDevice(int id)

или, измените тег a так, чтобы атрибут asp-route-* соответствовал имени параметра, например:

<a asp-action="DeleteDevice"
   asp-controller="Device"
   asp-route-deviceId="@device.DeviceId">
    Delete
</a>