Razor ViewEngine: Comment puis-je échapper au symbole «@»?


101

J'essaie de générer des poignées Twitter dans ASP.NET MVC3 en conjonction avec l'API Twitter @Anywhere, et je n'ai pas été en mesure de comprendre comment réellement échapper au symbole "@" dans une vue Razor.

Quelqu'un sait-il quelle est la syntaxe pour échapper le caractère «@» dans Razor?

J'ai essayé d'utiliser <text></text>et cela entraîne une erreur JIT.


2
Vous pouvez également utiliser l'entité HTML &#64;.
rsenna le

Réponses:


143

Vous devez utiliser @@ pour échapper au symbole @.

Une chose importante à noter est que vous N'AVEZ PAS besoin d'échapper au symbole @ lorsqu'il existe dans une adresse e-mail. Razor devrait être assez intelligent pour comprendre cela par lui-même.


4
<a href="" title="this @@ ne fonctionnera pas"> </a>, à la fois une erreur de syntaxe dans VS et une erreur d'analyseur à l'exécution.
Tien Do

1
@Tien voir le dernier code de caractère HTML ici a fonctionné pour moi: stackoverflow.com/a/13584640/84206
AaronLS

25

Si vous ajoutez des balises Meta Twitter

et votre nom d'utilisateur Twitter est, par exemple, foobar

ça devrait ressembler à ça

<meta name="twitter:site" content=@("@foobar")>

16

si vous avez besoin de commenter les symboles @ dans le code css et que @@ ne fonctionnera pas, utilisez ceci:

@("@@font-face"){ ... css ...}

1
C'est la meilleure méthode car l'entité HTML n'est pas utile dans CSS.
ChrisF

2

J'ai eu encore un autre cas étrange: passer '@' + @Model.SomePropertyà un lien href.

La meilleure solution pour ce cas a été donnée à l'OMI dans cette réponse à une question similaire. Les deux @@et @:ne fonctionnaient pas en utilisant le code html &#64;compliqueraient les choses.

Donc, mon code était <a href="~/path/?query=@('@')@Model.SomePropery">

@Html.Raw('@')@Model.SomePropery aurait également fonctionné.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.