我的程序中有以下视图。它有多个FloorNum,但是当它显示时它只显示第一个FloorNum。如何循环它以便显示所有FloorNum的值,其中LocID = xx
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.LocID)
</th>
<th>
@Html.DisplayNameFor(model => model.FloorNum)
</th>
<th>
@Html.DisplayNameFor(model => model.RoomNum)
</th>
<th>
@Html.DisplayNameFor(model => model.RoomStatus)
</th>
<th></th>
</tr>
@foreach (var item in Model ) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.LocID)
</td>
<td>
@Html.DisplayFor(modelItem => item.FloorNum)
</td>
<td>
@Html.DisplayFor(modelItem => item.RoomNum)
</td>
<td>
@Html.DisplayFor(modelItem => item.RoomStatus)
</td>
<td>
模型类是
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace HC.Data
{
public class Rooms
{
[Key]
public int ID { get; set; }
public int LocID { get; set; }
public int FloorNum { get; set; }
public int RoomNum { get; set; }
public int RoomStatus { get; set; }
}
}
我无法将LocID更改为列表,因为所有工作都是使用RAD完成的,此时更改它会大大延迟。我只是想知道是否显示一些循环可以使其工作。
答案 0 :(得分:0)
我的感觉是您将“房间”的单个值传递给视图,并且foreach循环显示一个房间。如果将List传递给视图,foreach循环几乎肯定会在您编写它时起作用。但DisplayFor可能不会,因为它不再指向Rooms类的单个实例而是指向房间列表。
答案 1 :(得分:0)
假设您的模型为List<Room>
:
@{
List<int> floors = Model.Select(x => x.FloorNum).Distinct();
}
@foreach (var floor in floors)
{
foreach(var room in Model.Where(x => x.FloorNum == floor))
{
... your display helpers here...
}
}
这是伪代码,因此可能需要进行一些调整。