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>
在这个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>