2016-12-04 31 views
1

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

ここでは表示できますか、コントローラにはどのような方法が必要ですか?いいえ

あなたが欲しいものを表現するためにビューモデルを作成していない - あなたがすべきはい

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

- あなたの場合

答えて

2

することができます「のために」を使用することをお勧めしますビューに表示するには(プロパティーIDおよびAmountに加えてpublic decimal RunningTotal { get; set; }プロパティを含めて、コントローラwherで計算しますそれが属する電子、これはまた、あなたのビューで値をフォーマットする[DisplayFormat]属性を適用するための柔軟性を提供しますビューでその単純

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

注意するように。

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

アイテムのrunningTotalには、現在のアイテムの前にあるすべてのアイテムを含める必要はありませんでしたか? –

関連する問題