如何计算视图中的运行总计?

时间:2016-12-04 10:33:38

标签: c# asp.net-mvc asp.net-mvc-5

在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>
}

是否可以在此处查看或我需要控制器中的任何方法?

2 个答案:

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