2011-06-19 60 views
1

我很新,在ASp.net MVC 3 Razor。 我正在將模型發送到與此模型緊密耦合的視圖。 這個模型有列表,我想在該模型列表中顯示特定字段的SUM。 是可能的和如何?在模型中添加值查看

回答

5

我不會做它在視圖中。

我會做它在視圖模型:

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 where condtion x.value1 = 1 etc –

+0

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

3

這應該這樣做,但是沒有看到你的一些代碼很難確切的說:

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

我有一個像下面 卡模型{ID,量}卡是該視圖得到,我想總結的數量模型。我嘗試了你的語法,但Sum沒有列在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);