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.


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.


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")>

16

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

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

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.