在MVC视图的foreach
中,是否可以计算Amount
值的运行总计?
@foreach (var item in Model)
{
<tr>
<td>@Html.DisplayFor(modelItem => item.ID)</td>
<td>@Html.DisplayFor(modelItem => item.Amount)</td>
<td> // here Item.Amount, should sum based on previous</td>
</tr>
}
是否可以在此处查看或我需要控制器中的任何方法?
答案 0 :(得分:2)
你能 - 是吗
@{ decimal runningTotal = 0M; } // assumes Total is typeof decimal
@foreach (var item in Model)
{
runningTotal += item.Amount
<tr>
<td>@Html.DisplayFor(modelItem => item.ID)</td>
<td>@Html.DisplayFor(modelItem => item.Amount)</td>
<td>@runningTotal</td>
</tr>
}
你应该 - 没有
创建一个视图模型来表示您想要在视图中显示的内容(即除了属性public decimal RunningTotal { get; set; }
和ID
之外还包含Amount
属性,并在控制器中进行计算它所属的地方,所以在视图中它只是
<td>@Html.DisplayFor(modelItem => item.RunningTotal)</td>
注意,这也使您可以灵活地应用[DisplayFormat]
属性来格式化视图中的值。
答案 1 :(得分:1)
在你的情况下最好使用“for”循环
@for (int i = 0;i<Model.Count();i++)
{
var modelItem = Model[i];
var calculatedField = modelItem.Amount;
if (i>0)
{
calculatedField = Model[i-1].Amount;
}
<tr>
<td>@Html.DisplayFor(modelItem => item.ID)</td>
<td>@Html.DisplayFor(modelItem => item.Amount)</td>
<td> @calculatedField </td>
</tr>
}