Motor de vista Asp.net MVC3 Razor, escape varias líneas de texto usando "Multiline @:"?

Estaba trabajando en un proyecto y llegué a un punto en el que necesito hacer algo como esto:

foreach(var item in Model)
{
@:<div class="my-class"> this is some content </div>
@:<div class="my-other-class">this is some more content </div>
}

Pero, por supuesto, sería una estupidez hacerlo así. Entonces mi pregunta es:

- ¿Existe una notación para escapar varias líneas de código html como el ejemplo anterior?

P.ej

@: <div>
   <div>
   <div> :@

Su ayuda es muy apreciada. Gracias :)

preguntado el 11 de septiembre de 13 a las 14:09

er.. no hay sintaxis de razor en su ejemplo de código, es HTML puro, por lo que no necesita @: en absoluto? -

4 Respuestas

@{  <text><div></div></text> }  

utilizan el <text></text>

Respondido 22 Oct 13, 03:10

Utilice las @{ }

@{ 
   <div>
   <div>
   <div> 
}

Aunque no está utilizando el motor Razor para nada útil en este contexto, simplemente puede omitirlos.

Como alternativa, puede simplemente agregar un @ antes de foreach:

@foreach(var item in Model)
{
   <div class="my-class"> @item.Property </div>
   <div class="my-other-class">this is some more content </div>

}

Respondido el 11 de Septiembre de 13 a las 14:09

Debe usar @ solo para acceder al alcance o delimitar el código c-sharp/vb en la vista. El HTML puro puede vivir solo como HTML puro, por ejemplo:

Delimita una asignación válida:

@{ 
   int x = 123; 
   string y = "because.";
}

Usa la variable x en el código

<div>@x</div>

Usa la variable y en el código

<div>@y</div>

Usar x e y al mismo tiempo

@{ 
   <div>@x</div>
   <div>@y</div>
}

Para:

@foreach(var item in Model)
{
  <div class="my-class"> @item.SomeProperty </div>
  <div class="my-other-class">this is some more content </div>
}

Respondido el 11 de Septiembre de 13 a las 14:09

Ah sí, el problema era mi estructura. Es cierto que el código html persiste por sí solo.

El problema era que tenía un bloque en el que insertaría una etiqueta de inicio diferente según una condición

if(cond) { insert <div> } else {insert other div}

Y supongo que el CLR no pudo ver el cierre } .

Se solucionó poniendo todo <div></div> estructura dentro de los bloques de condición.

Gracias por sus respuestas aunque, saludos!

Respondido el 12 de Septiembre de 13 a las 10:09

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.