2011-11-16 16 views
9

Hola Me pregunto ¿cómo puedo añadir números sin mostrarlos mientras que en bucle foreach expamle:Razor: añadiendo variable en bucle sin mostrarlo

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

¿Alguien puede ayudar?

aplausos
sushiBite

+0

tratar de hacer esto al principio pocas líneas y cito todo con @ { hacer todo aquí } – 1myb

Respuesta

18

reemplaza paréntesis con corchetes y añadir un punto y coma final:

@(intVariable += item.MyNumberOfInteres) 

se convierte en:

@{ intVariable += item.MyNumberOfInteres; } 

Dicho esto no debería estar haciendo cosas así en una vista. Si necesita hacerlo, esto simplemente significa que su modelo de vista no está adaptado a su vista. Así que adáptelo. Este tipo de información debería haberse integrado directamente en el modelo de vista y calcularse en el controlador.

Recuerde: la vista solo se muestra para mostrar los datos que se transmiten desde el controlador bajo la forma de un modelo de vista. Si una vista comienza a calcular variables y cosas, ya no se parece a una vista, sino a un código de espagueti.

+1

Esto merece unos 20 votos, por desgracia, sólo me da SO 1. –

+7

Claro, pero esta respuesta es incorrecto. La respuesta de Dan Diplo es correcta. Rory, cuando inicia su ciclo, se encuentra en modo de código. Hasta que Razor vea una etiqueta HTML, permanecerá en modo código. La razón por la que no está funcionando para usted en su ejemplo es debido a @. Cuando ya está en el modo de código, el analizador regresa al modo de marcado y asume que desea procesar lo que esté después de @ (hasta el final de la declaración). ¿Tener sentido? –

+0

Algunas veces necesita hacer algunos códigos o cálculos relacionados con la vista (es decir, mostrar los elementos en filas de 3 elementos). Ese tipo de cálculos están relacionados solo con la vista y no tienen nada que ver con el controlador o el modelo. –

15

Elimine el @ y el prefijo con un punto y coma, es decir.

intVariable += item.MyNumberOfInteres; 
+3

Esta es la respuesta correcta. :) –

+0

de acuerdo, funcionó para mí. – sonjz

Cuestiones relacionadas