Je mets à jour mes anciennes vues .aspx avec le nouveau moteur de vue Razore. J’ai un tas d’endroits où j’ai un code comme celui-ci:
<span class="vote-up">Vote Up
Idéalement, j’aimerais faire ceci:
Vote Up
Cependant, il y a deux problèmes ici:
vote-up@{puzzle.UserVote
…. ne traite pas le symbole @ comme un début de bloc de code @puzzle.UserVote == VoteType.Up
examine la première partie @puzzle.UserVote
comme s’il était censé rendre la valeur de la variable. Quelqu’un sait comment résoudre ces problèmes?
Cela devrait fonctionner:
Vote Up
La clé est d’encapsuler l’expression entre parenthèses après le délimiteur @. Vous pouvez faire en sorte que toute expression composée fonctionne de cette façon.
@( condition ? "true" : "false" )
Dans la plupart des cas, la solution de CD .. fonctionnera parfaitement bien. Cependant, j’ai eu une situation un peu plus tordue:
@(Ssortingng.IsNullOrEmpty(Model.MaidenName) ? " " : Model.MaidenName)
Cela m’imprimerait “& nbsp;” dans ma page, générer respectivement la source
. Maintenant, il y a une fonction Html.Raw(" ")
qui est supposée vous permettre d’écrire du code source, sauf que dans cette constellation, il génère une erreur de compilation:
Message d’erreur du compilateur: CS0173: Le type d’expression conditionnelle ne peut pas être déterminé car il n’y a pas de conversion implicite entre ‘System.Web.IHtmlSsortingng’ et ‘ssortingng’
J’ai donc fini par écrire une déclaration comme celle-ci, ce qui est moins agréable mais fonctionne même dans mon cas:
@if (Ssortingng.IsNullOrEmpty(Model.MaidenName)) { @Html.Raw(" ") } else { @Model.MaidenName }
Note: une chose intéressante est que, une fois que vous êtes dans l’accolade, vous devez redémarrer un bloc Razor.