【问题标题】:asp-route-id does not pass parameter valueasp-route-id 不传递参数值
【发布时间】:2017-05-04 22:39:10
【问题描述】:

此表正确填充了@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 正确传递给操作?

【问题讨论】:

    标签: asp.net-core asp.net-core-mvc


    【解决方案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>
    

    【讨论】:

    • 谢谢@Jamie Dunstan
    • 啊,动作方法有一个不同的名称,这就是它没有被初始化的原因!谢谢大佬!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 2019-05-28
    相关资源
    最近更新 更多