Razor Engine - Comment puis-je rendre différentes balises de corps en fonction de différentes conditions?
Voici le code que j'ai actuellement:
@{
if (Request.Browser.Browser == "IE") {
if (Request.Browser.MajorVersion == 7) { <body class="ie7"> }
if (Request.Browser.MajorVersion == 8) { <body class="ie8"> }
if (Request.Browser.MajorVersion == 9) { <body class="ie9"> }
if (Request.Browser.MajorVersion > 9) { <body> }
} else {
<body>
}
}
Voici l'erreur qu'il retourne lorsque le navigateur tente de rendre:
Analyseur Message d'Erreur: Le bloc de code est absent d'une clôture "}"
caractère. Assurez-vous d'avoir un correspondant "}" caractère pour tous les
"{" caractères à l'intérieur de ce bloc, et qu'aucun de ces "}" caractères
sont interprétées comme de balisage.
Ce que le diable? J'ai été capable de le faire dans la norme ASP.NET la syntaxe du modèle! Voici à quoi ressemblait:
<% //Adaptation of paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/
if ( (Request.Browser.Browser == "IE") && (Request.Browser.MajorVersion == 7) ) { %><body class="ie7"><% } %>
<% if ( (Request.Browser.Browser == "IE") && (Request.Browser.MajorVersion == 8) ) { %><body class="ie8"><% } %>
<% if ( (Request.Browser.Browser == "IE") && (Request.Browser.MajorVersion == 9) ) { %><body class="ie9"><% } %>
<% if ( (Request.Browser.Browser == "IE") && (Request.Browser.MajorVersion > 9) ) { %><body><% } %>
<% if (Request.Browser.Browser != "IE") { %><body><% } %>
source d'informationauteur Joshua Hayworth
Vous devez vous connecter pour publier un commentaire.
Une meilleure option pourrait être de déclarer une
ieClass
variable en haut de votre point de vue, et ensuite y faire référence dans votre balise body....
Je vous recommande aussi un peu plus propre approche en plaçant rasoir/code c# en haut de votre page et à l'aide de variables logiquement attribuer des valeurs pour l'utiliser dans votre page. Tout d'abord, il résout le problème des balises, mais contribue également à la maintenance du code.
Avec tout ce que dit; à moins qu'il n'est pas disponible à cette page, le travail effectué ne doit pas être sur la présentation des éléments (cshtml), mais plutôt de le ViewBag (par exemple ViewBag.BodyCssClass).
[Edit] j'ai oublié de la pause pour l'extérieur de l'instruction switch pour le " IE " cas. 🙂
D'ouvrir beaucoup de
<body>
des balises, mais ne pas les fermer. Le rasoir est "intelligent" de sorte qu'il se souvient de l'ouvert et le fermé les balises lors de l'analyse.Vous pouvez dire rasoir d'ignorer les balises à l'aide de
si vous échapper à la dernière
<body>
vous devez également échapper à la</body>
tag@:</body>
. Mon conseil est de laisser un<body>
tag est.Mais il n'y est plus.
Votre mise en forme de tout sur une seule ligne probablement aussi confond rasoir. (Pas testé), vous besoin de quelque chose comme:
Si cela ne fonctionne pas, la mettre en forme comme:
(Voir JRummel réponse)
Et probablement la solution la plus simple est:
JRummel réponse est la bonne. D'étendre sur elle, j'ai modifié le script pour me permettre de prendre en charge les anciennes versions d'IE et restent compatibles.