Asp.net mvc 4 列表中的项中的Foreach属性

Asp.net mvc 4 列表中的项中的Foreach属性,asp.net-mvc-4,razor,foreach,Asp.net Mvc 4,Razor,Foreach,我正在改造一个小型的帮助台应用程序(从ASP classic迁移到MVC4)。这是我的第一个完整的MVC应用程序。我选择了剃须刀,我觉得这很直观。但我在这方面遇到了麻烦 我从数据库中获取一个要显示给用户的票据列表。我想要的是动态创建一个表。现在我已经手动将标题放置到位,这很好。不过,如果有一种方法可以动态地做到这一点,我愿意接受建议 但关键的一点是从罚单中获得每一笔财产。我有一个票类,有20多个属性。我将致力于将它们缩小到我们希望显示的最小值,但作为一个起点,我正试图将它们全部显示在屏幕上 我有

我正在改造一个小型的帮助台应用程序(从ASP classic迁移到MVC4)。这是我的第一个完整的MVC应用程序。我选择了剃须刀,我觉得这很直观。但我在这方面遇到了麻烦

我从数据库中获取一个要显示给用户的票据列表。我想要的是动态创建一个表。现在我已经手动将标题放置到位,这很好。不过,如果有一种方法可以动态地做到这一点,我愿意接受建议

但关键的一点是从罚单中获得每一笔财产。我有一个
类,有20多个属性。我将致力于将它们缩小到我们希望显示的最小值,但作为一个起点,我正试图将它们全部显示在屏幕上

我有以下资料:

@model IList<Helpdesk4.Models.Ticket>
@model-IList

@foreach(模型中的var票据)
{ 
@foreach(票据中的var项目)
{ 
项目
}
}
但我不能在罚单上运行那个
foreach
。我是一个足够的noob,我不完全明白为什么,但我认为属性必须被加载,因此默认情况下不能被枚举。所以,在不提取每个属性名称的情况下,如何从票证中获取每个属性的值


我使用
NHibernate
对数据库进行查询,如果这有什么区别的话

Foreach只处理可枚举项,而常规类不实现IEnumerable。你需要自己把每件东西都放在上面。最好的方法是对每个属性使用类似于
Html.TextBoxFor(m=>m.Property)
的内容

编辑: 最好的方法是在对象本身上使用
Html.LabelFor

@for(int index = 0; index < Model.Count; ++index)
{
  <tr>
    @Html.LabelFor(m => m[index])
  <tr>
}
for(int index=0;indexm[index]) }
如果手动将每个属性值添加到行中,则这是最清晰、最简单的方法。这确实需要少量的“额外”工作,但这是一次性的事情,而20个属性并没有那么多。它还使您能够更精确地控制每个属性的显示方式,如右对齐或左对齐等

你的结局是这样的

@foreach (var ticket in Model)
{ 
    <tr>            
        <td>
            @ticket.FirstProperty
        </td>
        <td class="align-right">
            @ticket.SecondProperty
        </td>
        <td class="align-center bold">
            @Html.DisplayFor(m => ticket.ThirdProperty)
        </td>
        <td>
            <i>@ticket.FourthProperty</i>
        </td>
        ...
    </tr>
}
@foreach(模型中的var票据)
{ 
@票。第一财产
@第二财产
@DisplayFor(m=>ticket.ThirdProperty)
@第四财产
...
}
为了强调可定制性,添加了样式等


祝你的第一个MVC项目好运

您需要研究如何使用反射来循环属性。然而,反射通常不会在视图中进行……也许我做错了什么,但这只会显示我的索引号
[0]、[1]、[2]、[3]…
@foreach (var ticket in Model)
{ 
    <tr>            
        <td>
            @ticket.FirstProperty
        </td>
        <td class="align-right">
            @ticket.SecondProperty
        </td>
        <td class="align-center bold">
            @Html.DisplayFor(m => ticket.ThirdProperty)
        </td>
        <td>
            <i>@ticket.FourthProperty</i>
        </td>
        ...
    </tr>
}