2016-12-04 5 views
1

В foreach в представлении MVC можно рассчитать общее количество значений 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

Можете ли вы - Да

@{ 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, а также выполнить расчет в контроллере wher е он принадлежит, так что с точки зрения его просто

<td>@Html.DisplayFor(modelItem => item.RunningTotal)</td> 

Примечание это также дает вам возможность применить атрибут [DisplayFormat] для форматирования значения в представлении.

1

В вашем случае лучше использовать «для» петли

@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> 
} 
+0

Не работает ли цель для предмета, которая должна включать все элементы до ** и ** текущего элемента? –

Смежные вопросы