Razor ViewEngine: Wie entkomme ich dem @ -Symbol?

101

Ich versuche, einige Twitter-Handles in ASP.NET MVC3 in Verbindung mit der Twitter @ Anynywhere-API auszugeben, und konnte nicht herausfinden, wie das Symbol "@" in einer Razor-Ansicht tatsächlich ausgeblendet werden kann.

Weiß jemand, wie die Syntax lautet, um dem "@" -Zeichen in Razor zu entkommen?

Ich habe versucht, <text></text>und das führt zu einem JIT-Fehler.

Aaronontheweb
quelle
2
Sie können auch die HTML-Entität verwenden &#64;.
Rsenna

Antworten:

143

Sie müssen @@ verwenden, um das @ -Symbol zu umgehen.

Eine wichtige Sache, die Sie beachten sollten, ist, dass Sie das @ -Symbol NICHT maskieren müssen, wenn es in einer E-Mail-Adresse vorhanden ist. Razor sollte klug genug sein, um das selbst herauszufinden.

JasCav
quelle
4
<a href="" title="this @@ funktioniert nicht"> </a>, sowohl Syntaxfehler in VS als auch Parserfehler zur Laufzeit.
Tien Do
1
@Tien sehen, dass der letzte HTML-Zeichencode hier für mich funktioniert hat: stackoverflow.com/a/13584640/84206
AaronLS
25

Wenn Sie Twitter-Meta-Tags hinzufügen

und Ihr Twitter-Benutzername lautet beispielsweise foobar

es sollte so aussehen

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

Wenn Sie @ Symbole im CSS-Code kommentieren müssen und nur @@ nicht funktioniert, verwenden Sie Folgendes:

@("@@font-face"){ ... css ...}
Lin-Art
quelle
1
Dies ist die beste Methode, da die HTML-Entität in CSS nicht hilfreich ist.
ChrisF
2

Ich hatte noch einen merkwürdigen Fall: Übergabe '@' + @Model.SomePropertyan einen Link href.

Die beste Lösung für diesen Fall wurde IMO in dieser Antwort auf eine ähnliche Frage gegeben. Beides @@und @:nicht funktioniert, während der HTML-Code verwendet wurde, &#64;würde die Dinge komplizieren.

Mein Code war also <a href="~/path/?query=@('@')@Model.SomePropery">

@Html.Raw('@')@Model.SomePropery hätte auch funktioniert.

Tiberiu Craciun
quelle