Bien que Microsoft ait créé un rendu automatique des attributs html dans razor MVC4, il m'a fallu un certain temps pour découvrir comment rendre une deuxième classe css sur un élément, basée sur une expression de rasoir conditionnelle. J'aimerais le partager avec toi.
Basé sur une propriété de modèle @ Model.Details, je souhaite afficher ou masquer un élément de liste. S'il y a des détails, un div doit être affiché, sinon, il doit être masqué. En utilisant jQuery, tout ce que j'ai à faire est d'ajouter une classe show ou hide, respectivement. Pour d'autres raisons, je souhaite également ajouter une autre classe, "détails". Donc, ma majoration devrait être:
<div class="details show">[Details]</div>
ou <div class="details hide">[Details]</div>
Ci-dessous, je montre quelques tentatives infructueuses (le balisage résultant en supposant qu'il n'y a pas de détails).
Ce: <div @(@Model.Details.Count > 0 ? "class=details show" : "class=details hide")>
,
rendra ceci: <div class="details" hide="">
.
Ceci: <div @(@Model.Details.Count > 0 ? "class=\"details show\"" : "class=\"details hide\"")>
.
rendra ceci: <div class=""details" hide"="">
.
Ce: <div @(@Model.Details.Count > 0 ? "class='details show'" : "class='details hide'")>
rendra ceci: <div class="'details" hide'="">
.
Aucun de ces éléments n'est une majoration correcte.