Während Microsoft in Razor MVC4 ein automatisches Rendering von HTML-Attributen erstellt hat, habe ich einige Zeit gebraucht, um herauszufinden, wie eine zweite CSS-Klasse für ein Element basierend auf einem bedingten Rasiererausdruck gerendert werden kann. Ich möchte es mit Ihnen teilen.
Basierend auf einer Modelleigenschaft @ Model.Details möchte ich ein Listenelement ein- oder ausblenden. Wenn es Details gibt, sollte ein div angezeigt werden, andernfalls sollte es ausgeblendet werden. Mit jQuery muss ich lediglich eine Klasseneinstellung bzw. -ausblendung hinzufügen. Für andere Zwecke möchte ich auch eine weitere Klasse hinzufügen, "Details". Mein Aufschlag sollte also sein:
<div class="details show">[Details]</div> oder <div class="details hide">[Details]</div>
Im Folgenden zeige ich einige fehlgeschlagene Versuche (resultierender Aufschlag unter der Annahme, dass keine Details vorhanden sind).
Dies : <div @(@Model.Details.Count > 0 ? "class=details show" : "class=details hide")>,
wird dies rendern : <div class="details" hide="">.
Dies : <div @(@Model.Details.Count > 0 ? "class=\"details show\"" : "class=\"details hide\"")>.
wird dies rendern : <div class=""details" hide"="">.
Dies: <div @(@Model.Details.Count > 0 ? "class='details show'" : "class='details hide'")>
wird dies rendern : <div class="'details" hide'="">.
Keines davon ist korrekt.