问题 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 是否正确传递给了动作?


10840
2018-01-18 08:07


起源



答案:


将控制器操作更改为:

public async Task<IActionResult> DeleteDevice(int id)

或者,改变 a 标签这样的 asp-route-* 属性匹配参数的名称,如下所示:

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

16
2018-01-18 09:13



谢谢@Jamie Dunstan - Vague


答案:


将控制器操作更改为:

public async Task<IActionResult> DeleteDevice(int id)

或者,改变 a 标签这样的 asp-route-* 属性匹配参数的名称,如下所示:

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

16
2018-01-18 09:13



谢谢@Jamie Dunstan - Vague