C# 如何使用组合属性扩展ViewModel
在MVC项目中,我使用这个simpel ViewModel来填充.cshtml中的表。每个列都很容易填充设备对象的属性 我需要创建一个新列并用计数填充它。此计数是从服务器上的deviceId精心编制的 我想用Count属性扩展我的ViewModel。计数由用于检索列表和计数的每个deviceId精心编制 所以我的问题是如何设计这个“组合”视图模型?我曾考虑过将其全部封装在一个私人课程中,但我不知道这是否是最佳实践 视图模型:C# 如何使用组合属性扩展ViewModel,c#,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-5,asp.net-mvc-viewmodel,C#,Asp.net Mvc,Asp.net Mvc 4,Asp.net Mvc 5,Asp.net Mvc Viewmodel,在MVC项目中,我使用这个simpel ViewModel来填充.cshtml中的表。每个列都很容易填充设备对象的属性 我需要创建一个新列并用计数填充它。此计数是从服务器上的deviceId精心编制的 我想用Count属性扩展我的ViewModel。计数由用于检索列表和计数的每个deviceId精心编制 所以我的问题是如何设计这个“组合”视图模型?我曾考虑过将其全部封装在一个私人课程中,但我不知道这是否是最佳实践 视图模型: public class DeviceViewModel {
public class DeviceViewModel
{
public List<Device> Devices { get; set; }
}
<table>
<thead>
<tr>
<th>Name</th>
<th>Priority</th>
<th>Version</th>
<th>Count</th>
</tr>
</thead>
<tbody>
@{
foreach (var composedDevice in Model.ComposedDevices)
{
<tr id="@composedDevice.ID">
<td>@composedDevice.Name</td>
<td>@composedDevice.Priority</td>
<td>@composedDevice.Version</td>
<td>@composedDevice.Count</td>
</tr>
}
}
</tbody>
</table>
公共类设备视图模型
{
公共列表设备{get;set;}
}
.cshtml:
<table>
<thead>
<tr>
<th>Name</th>
<th>Priority</th>
<th>Version</th>
</tr>
</thead>
<tbody>
@{
foreach (var device in Model.Devices)
{
<tr id="@device.ID">
<td>@device.Name</td>
<td>@device.Priority</td>
<td>@device.Version</td>
</tr>
}
}
</tbody>
</table>
名称
优先事项
版本
@{
foreach(Model.Devices中的var设备)
{
@设备名称
@设备,优先级
@设备版本
}
}
我想象.cshtml是这样的,不知道ViewModel:
public class DeviceViewModel
{
public List<Device> Devices { get; set; }
}
<table>
<thead>
<tr>
<th>Name</th>
<th>Priority</th>
<th>Version</th>
<th>Count</th>
</tr>
</thead>
<tbody>
@{
foreach (var composedDevice in Model.ComposedDevices)
{
<tr id="@composedDevice.ID">
<td>@composedDevice.Name</td>
<td>@composedDevice.Priority</td>
<td>@composedDevice.Version</td>
<td>@composedDevice.Count</td>
</tr>
}
}
</tbody>
</table>
名称
优先事项
版本
计数
@{
foreach(Model.ComposedDevices中的var composedDevice)
{
@composedDevice.Name
@组合设备。优先级
@composedDevice.Version
@组合设备。计数
}
}
我不太明白你在这里的意思,你能举个例子吗?你的意思是你想在你的设备上按Id分组一个GroupBy
?为什么你不能在设备上添加Count
?此外,还可以使用@foreach(…){}
使用具有int Count
属性的视图模型。您当前的DeviceViewModel
实际上不是一个视图模型-您可以将IEnumerable
传递给视图。这就是为什么您需要一个视图模型-public class DeviceVM
,其属性为ID
,Name
,Priority
,Version
和Count
然后将IEnumerable
传递给视图