2011-11-16 167 views
9

喜在循環添加變量我想知道我怎麼添加數字沒有在foreach循環顯示他們,而 expamle:剃刀:不顯示它

@{ int intVariable = 0; } 

@foreach(var item in @Model.Collection) 
{ 
    @(intVariable += item.MyNumberOfInteres) //->how can I calculate this without it being rendered to the website ? 

    //some Html code....... 
} 

有人能幫忙嗎?

歡呼
sushiBite

+0

努力使今天在第幾行,並與 報價一切@ { 難道這裏的一切 } – 1myb

回答

18

你用兩個大括號代替括號並添加一個尾隨分號:

@(intVariable += item.MyNumberOfInteres) 

變爲:

@{ intVariable += item.MyNumberOfInteres; } 

這是說,你不應該做的事情像這樣的看法。如果你需要這樣做,這只是意味着你的視圖模型不適合你的觀點。所以適應它。這種信息應直接集成在視圖模型中並在控制器中計算。

請記住:該視圖僅用於顯示從視圖模型形式的控制器傳遞的數據。如果一個視圖開始計算變量和東西,它不再類似於一個視圖,但意大利麪代碼。

+1

這值得約20票,可惜所以只給了我肯定1. –

+7

,但這個答案不正確。 Dan Diplo的答案是正確的。 Rory,當你開始你的循環時,你處於代碼模式。在Razor看到HTML標籤之前,它將保持代碼模式。在你的例子中它不適合你的原因是因爲@。當你已經處於代碼模式時,解析器會回到標記模式,並假定你想渲染@(到語句結尾)之後的任何內容。合理? –

+0

有時你需要做一些與視圖相關的代碼或計算(例如,顯示3個項目的行中的項目)。這種計算只與視圖有關,與控制器或模型無關。 –

15

用分號刪除@和前綴,即。

intVariable += item.MyNumberOfInteres; 
+3

這是正確的答案:) –

+0

同意,爲我工作。 – sonjz