Mentre Microsoft ha creato un rendering automagico degli attributi HTML nel rasoio MVC4, mi ci è voluto un po 'di tempo per scoprire come eseguire il rendering di una seconda classe CSS su un elemento, basato su un'espressione condizionale del rasoio. Vorrei condividerlo con te.
Basato su una proprietà del modello @ Model.Details, voglio mostrare o nascondere un elemento dell'elenco. Se ci sono dettagli, dovrebbe essere mostrato un div, altrimenti dovrebbe essere nascosto. Usando jQuery, tutto ciò che devo fare è aggiungere uno spettacolo di classe o nascondere, rispettivamente. Per altri scopi, voglio anche aggiungere un'altra classe, "dettagli". Quindi, il mio mark-up dovrebbe essere:
<div class="details show">[Details]</div>
o <div class="details hide">[Details]</div>
Di seguito, mostro alcuni tentativi falliti (il markup risultante presuppone che non ci siano dettagli).
Questo: <div @(@Model.Details.Count > 0 ? "class=details show" : "class=details hide")>
,
renderà questo: <div class="details" hide="">
.
Questo: <div @(@Model.Details.Count > 0 ? "class=\"details show\"" : "class=\"details hide\"")>
.
renderà questo: <div class=""details" hide"="">
.
Questo: <div @(@Model.Details.Count > 0 ? "class='details show'" : "class='details hide'")>
renderà questo: <div class="'details" hide'="">
.
Nessuno di questi è markup corretto.