2012-03-26 7 views
5

¿Puedo optimizar la asignación de clase aquí? Tengo que hacer esto en muchos lugares diferentes y estoy tratando de encontrar la forma de hacerlo menos ... copy paste-ish/inline.¿Existe alguna forma mejor de agregar css dinámicamente a la hoja de afeitar que con @if()

@foreach(var m in Model.ObjectList) 
{ 
<td @if(m.RandomObject.isFlagged){ 
    <text>class="flagged"</text> 
    } 
> 
    @m.RandomObject.Name @m.RandomObject.Description 
</td> 
} 

Tenga en cuenta que cada Lista de objetos en los diferentes lugares tiene diferentes objetos aleatorios.

supongo que esto funcionaría también, pero todavía no parece la mejor práctica:

<td class="[email protected](m.RandomObject.isFlagged)">... 

y luego tener la definición CSS sea .flaggedtrue

Respuesta

7

lo general el uso del ?ternary operator para este tipo de cosas

<td class="@(m.RandomObject.isFlagged ? "flagged" : "")"> 
    ... 
</td> 
+1

Aunque es agradable de leer :), esperaba un enfoque más genérico para evitar marcar cada td que contiene un Rando mObject con un –

+0

condicional @TravisJ: no hay forma de evitar la lógica; +1 a la respuesta ordenada de Andrew. Podría resumirse en un método auxiliar para mayor "limpieza" –

+0

Creo que entiendo, así que en lugar de verificar el condicional para cada 'td', la alternativa es su segunda sugerencia, es decir, dar como salida el condicional mismo y crear clases css que lo incluyan : '' daría como resultado las clases '.flagged-true' y' .flagged-false' css – Andrew

Cuestiones relacionadas