2012-02-03 17 views
5

Es mi primer mensaje, por lo tanto, hola :)sintaxis razor: lazo con ifs y divs

Quiero abrir y cerrar condicionalmente div. ¿Qué estoy haciendo mal?

@foreach (var m in Model.Recipes) 
{ 
    if (left) 
    { 
     <div class="rec-line"> 
    }  

    if (left) 
    {    
     </div> 
    } 
} 
+0

Puede describir exactamente lo que se espera que suceda, y lo que está sucediendo realmente? –

+0

No puede abrir y cerrar elementos en diferentes bloques como ese. ¿Qué está tratando de lograr? Puede haber una mejor manera de hacer lo que estás tratando de hacer. –

+0

Se resuelve a continuación, pero para su curiosidad estoy enumerando elementos de la colección por parejas. Por lo tanto, en cada elemento impar, abro div y después de uno lo cierro. [div] [left] [right] [/ div] [div] ... –

Respuesta

5

Es necesario utilizar el carácter de escape para que el motor de afeitar saber que <div> es texto mediante el uso de @:

código:

@foreach (var m in Model.Recipes) 
{ 
if (left) 
{ 
    @:<div class="rec-line"> 
}  

if (left) 
{    
    @:</div> 
} 
} 
+0

No, no: http://haacked.com/archive/2011/01/06/razor-syntax- quick-reference.aspx –

+2

@Shark - Sí, lo hace. Lee tu artículo "' @if (foo) { @: Texto sin formato es @bar } '". Claramente, si intenta compilar el código original de la operación, tendrá un error lógico y se mostrará incorrectamente. La solución a esta situación es agregar los marcadores @: para que el marcado html no rompa las declaraciones C#. Para que quede claro, sin @: esto no se renderizará, con @: se renderizará. –

+1

Ah, ya veo lo que estás diciendo ahora. Buen punto. –