asp-route-id不传递参数值

Vag*_*gue 15 asp.net-core-mvc asp.net-core

此表正确填充@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>
Run Code Online (Sandbox Code Playgroud)

控制器动作签名是

public async Task<IActionResult> DeleteDevice(int deviceId)
Run Code Online (Sandbox Code Playgroud)

调用该操作但deviceId= 0.

如何确保@device.DeviceId正确传递给操作?

Jam*_*tan 29

将控制器操作更改为:

public async Task<IActionResult> DeleteDevice(int id)
Run Code Online (Sandbox Code Playgroud)

或者,更改a标记以使asp-route-*属性与参数的名称匹配,如下所示:

<a asp-action="DeleteDevice"
   asp-controller="Device"
   asp-route-deviceId="@device.DeviceId">
    Delete
</a>
Run Code Online (Sandbox Code Playgroud)