asp-route-id 无法访问 ViewModel 属性

ViewModel property not accessible to asp-route-id

在这个table

<table border="1" cellpadding="10">
@foreach (var device in @Model.Devices)
{
    <tr>
        <td>@device.DeviceID</td>
        <td>@device.DeviceName</td>
        <td>@device.CALs</td>
        <td align="right">@device.UnlockedFrom.ToShortDateString()</td>
        <td align="right">@device.UnlockedTo.ToShortDateString()</td>
        <td>
            <a asp-action="DeleteDevice"
               asp-controller="Manage"
               asp-route-id="@device.DeviceId">
                Delete
            </a>
        </td>
  </tr>
}

<td>@device.DeviceID</td> 很好,但是 asp-route-id="@device.DeviceId 会出现波浪形 device does not contain a definition for DeviceId

视图模型公开了一组设备

public IEnumerable<Device> Devices { get; set; }

Device 包含以下属性

    public int DeviceID { get; set; }
    public string UserId { get; set; }
    public virtual ApplicationUser User { get; set; }
    public int CALs { get; set; }
    public string DeviceName { get; set; }
    public DateTime UnlockedFrom { get; set; }
    public DateTime UnlockedTo { get; set; }

如何使 DeviceId 可传递给控制器​​?

因为您的 属性 名字是 DeviceID,而不是 DeviceId。作为 asp-route-* 属性值传递的 属性 名称区分大小写。

将您的代码更改为

<a asp-action="DeleteDevice"  asp-controller="Home"
                                              asp-route-id="@device.DeviceID">Delete </a>