显示视图值

时间:2012-12-17 17:10:51

标签: asp.net-mvc model-view-controller asp.net-mvc-4

我的程序中有以下视图。它有多个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完成的,此时更改它会大大延迟。我只是想知道是否显示一些循环可以使其工作。

2 个答案:

答案 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...
    }
}

这是伪代码,因此可能需要进行一些调整。