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.