2016-12-04 2 views
1

In foreach in einer MVC-Ansicht, ist es möglich, eine laufende Summe der Amount Wert zu berechnen?Wie berechnet man eine laufende Summe in Sicht?

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

Ist es hier möglich oder ich brauche eine Methode in der Steuerung?

Antwort

2

Können Sie - Ja

@{ 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> 
} 

Sollten Sie - Keine

Erstellen Sie eine Ansicht Modell darzustellen, was Sie wollen in der Ansicht anzeigen (dh eine public decimal RunningTotal { get; set; } Eigenschaft zusätzlich zu den Eigenschaften ID und Amount enthalten, und die Berechnung in der Steuerung durchführen, wo E gehört, so dass seine einfach in der Ansicht

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

Beachten Sie auch diese gibt Ihnen die Flexibilität ein [DisplayFormat] Attribut zu formatieren Sie den Wert im Hinblick auf die Anwendung.

1

In Ihrem Fall besser zu bedienen "für" Schleife

@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

Muß das runningTotal für einen Artikel nicht alle Artikel enthalten, bevor ** und ** der aktuelle Artikel? –

Verwandte Themen