如何将 html 帮助程序用于泛型集合
本文关键字:用于 泛型 集合 帮助程序 html | 更新日期: 2023-09-27 18:35:07
我有一个强类型视图,它是一个 IEnumerable。我正在尝试将 DisplayFor 帮助程序用于集合,这是我模型的属性。在迭代我的模型时,帮助程序可以完美运行,但是当我尝试将其用于子集合时,它崩溃了。
我的第一次尝试是写这样的东西:
@Html.DisplayFor(modelItem =>
item.Months.Where(x=>x.Equals(month)).Select(x=>x.Amount))
但后来我得到了这个运行时错误:"模板只能与字段访问、属性访问、一维数组索引或单参数自定义索引器表达式一起使用。
这是我的观点代码:
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name) @* It works perfectly here*@
</td>
@foreach (var month in item.Months)
{
<td>
@month.Amount @* How can I use DisplayFor helper here ? *@
</td>
}
</tr>
}
这是我的模型代码:
public class Department
{
public string Name { get; set; }
public List<Month> Months { get; set; }
}
public class Month
{
public int number { get; set; }
[DataType(DataType.Currency)]
public decimal Amount { get; set; }
}
您应该考虑使用 Partial Views
.
@Html.Partial("_months", Months)
然后,您的部分视图可能如下所示:
@model IEnumerable<Months>
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.number)
</th>
<th>
@Html.DisplayNameFor(model => model.Amount)
</th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.number)
</td>
<td>
@Html.DisplayFor(modelItem => item.Amount)
</td>
</tr>
}
</table>
试试这个:
@for(int i=0; i<item.Months.Count; i++)
{
<td>
@Html.DisplayFor(modelItem => item.Months[i].Amount)
</td>
}