2011-06-19 5 views
1

私はASp.netのMVC 3 Razorの新機能です。 このモデルに密接に結合されたビューにモデルを送信しています。 このモデルにはリストがあり、そのモデルリストに特定のフィールドのSUMを表示したいと思います。 それは可能ですか?モデルの値をビューに追加

答えて

5

私はビューでそれをしないだろう。

私はViewModelににそれを行うだろう:

public class SomeViewModel 
{ 
    public ICollection<int> SomeValues { get; set; } 
    public int MySum { get { return SomeValues.Sum(x => x.SomeValue); } } 
} 

は、次にビュー:

@Html.DisplayFor(model => model.MySum) 

別の方法としては、一般的なHTMLヘルパーを使用することができますが、一般的な作られたので、あなたはどんな渡っを再利用することができますモデルはIEnumerable<T>を有し、これは凝集することができる。

ビューを常に不必要なロジックから守ってください。

+1

+1。 – aligray

+0

には、条件を設定する方法があります。 public int MySum {get {return SomeValues.Sum(x => x.SomeValue);} }} like condtion x.value1 = 1など –

+0

'SomeValues.Where(x => x.SomeValue == 1).Sum(x => x.SomeValue)' – aligray

3

これはそれを行う必要がありますが、あなたのコードの一部を見ることなく、それは正確には難しい:

@Model.YourList.Sum(p => p.PropertyNameYouWantToSum) 
+0

iは カード{ID、量}カードを以下のようなモデルを持っている私は量を合計したかった、ビューが取得するモデルです。私はあなたの構文を試しましたが、合計はintellisenseにリストされていません –

+0

'Sum(...)'は 'IEnumerable 'のみになります。これまでのコードをいくつか投稿することができますか? – aligray

+0

小数点D = listItem.Where(P => P.Amount> 100).Sum(P => P.Amount); –

0
Decimal D = listItem.Where(P=>P.Amount>100).Sum(P=>P.Amount); 
関連する問題