2011-03-17 16 views
11

Estoy usando el motor Razor view con MVC 3 y estoy tratando de hacer que las filas pares e impares tengan diferentes clases en una tabla.Filas de tablas pares e impares con Razor

Hasta ahora tengo esta

@{ var odd = true; } 
@foreach(var userLot in Model) { 
    if (!odd) { 
     <tr id="[email protected]" class="even"> 
    else 
     <tr id="[email protected]" class="odd"> 
    }  
      <td>@userLot.Id</td> 
      <td>@userLot.Description</td> 
      <td>@userLot.Carat</td> 
      <td class="averageBid">@userLot.AverageBid</td> 
      <td class="rank">@userLot.Rank</td> 
      <td class="currentBid">@userLot.CurrentBid</td> 
      <td style="width: 200px; height: 30px;" class="tdWithBidInput"><input type="text" style="display: none" /></td> 
     </tr> 
    @{ odd = !odd; } 
} 

Esto me está dando problemas sin fin, con el motor de vista estúpidos incapaces de averiguar qué es lo que está marcado y código. He tratado de envolver las etiquetas de apertura tr en una directiva de texto, pero luego el motor de vista estúpido gime sobre las etiquetas de cierre tr. Si envuelvo la etiqueta de cierre tr en una directiva de texto, el estúpido motor de vista gime que la directiva de texto no tiene etiqueta de apertura.

Para que quede claro, esto

<text></ tr></text> 

da un error que la etiqueta de texto no tiene ninguna etiqueta de apertura coincidente. Encantador.

¿Cómo escribo esto para que Razor no proporcione un error?

Por favor, no recomiendo una solución de JavaScript, estoy tratando de resolver los problemas de Razor aquí.

+1

Vea también http://stackoverflow.com/questions/4929538/c-sharp-mvc3-razor-alternating-items-in-a-foreach-list –

Respuesta

26

¿Qué tal esto:

@{ var odd = true; } 
@foreach(var userLot in Model) { 
    <tr id="[email protected](userLot.Id)" class="@(odd ? "odd": "even")"> 
     <td>@userLot.Id</td> 
     <td>@userLot.Description</td> 
     <td>@userLot.Carat</td> 
     <td class="averageBid">@userLot.AverageBid</td> 
     <td class="rank">@userLot.Rank</td> 
     <td class="currentBid">@userLot.CurrentBid</td> 
     <td style="width: 200px; height: 30px;" class="tdWithBidInput"><input type="text" style="display: none" /></td> 
    </tr> 
    odd = !odd; 
} 

@(...) es una declaración válida y muy útil.

+0

Hmm .... Eso resuelve el primer problema, pero ahora está gimiendo por el último bit en @ {impar =! impar; } - el error que obtengo es Sin sobrecarga para el método 'Escribir' toma 0 argumentos –

+2

No necesita el '@ {..}' "una vez que está en el código", lo que a veces puede ser bastante confuso. –

+0

Heh parece que editamos al mismo tiempo –

Cuestiones relacionadas