683 Stimmen

Escape @ Zeichen in der Razor View Engine

Ich erstelle eine Beispielsite für ASP.NET MVC 3 mit Razor als View Engine. Die Razor-Syntax beginnt mit @ Zeichen z.B. @RenderBody() . Wenn ich @test auf meine cshtml-Seite schreibe, erhalte ich einen Parse-Fehler

CS0103: Der Name 'test' existiert nicht im aktuellen Kontext

Wie entferne ich das Zeichen '@'?

1 Stimmen

In C# können Sie Schlüsselwörter mit einem @ markieren, um sie als Variablennamen und nicht als Schlüsselwörter zu behandeln. Nach allem, was ich weiß, scheint es unmöglich, reservierte Schlüsselwörter in Razor auf diese Weise zu verwenden.

1 Stimmen

@GrimaceofDespair die Möglichkeit, Schlüsselwörter trotzdem als Variablen zu kennzeichnen, besteht darin, die zweite @ in Klammern. Ich habe es so hinbekommen, indem ich es so geschrieben habe: @(@new)

13voto

Alfamale Punkte 1059

@@ ist das Escape-Zeichen für @ in Razor-Ansichten (siehe oben).

Razor versucht jedoch herauszufinden, wann ein '@' nur ein '@' ist und wo es C# (oder VB.Net) Code markiert. Eine der Hauptanwendungen dafür ist die Identifizierung von E-Mail-Adressen innerhalb einer Razor-Ansicht - es sollte nicht notwendig sein, das @-Zeichen in einer E-Mail-Adresse zu entschlüsseln.

9voto

DragonDTG Punkte 553

Für die Frage nach @RazorCodePart1 @@ @RazorCodePart2 müssen Sie die Reihenfolge beachten:

@RazorCodePart1 @:@@ @RazorCodePart2

Ich weiß, es sieht etwas seltsam aus, aber es funktioniert und liefert Ihnen das wörtliche Zeichen '@' zwischen den Codeblöcken.

9voto

Hector Soto Punkte 53

Ich weiß, dass diese Frage schon alt ist, aber ich habe alles oben genannte ausprobiert und es hat mir nicht geholfen, das Zeichen "@" in ASP.NET Framework (MVC 5) innerhalb einer URL zu entkommen. Basierend auf der Antwort von Terje Solem ist der UTF-8-Code jedoch %40 hat bei mir funktioniert. Das ist die ursprüngliche URL, die ich erreichen wollte:

https://unpkg.com/@google/markerclustererplus@4.0.1/dist/markerclustererplus.min.js

Das hat bei mir in meinem Code funktioniert:

https://unpkg.com/%40google/markerclustererplus@4.0.1/dist/markerclustererplus.min.js

8voto

watfy Punkte 114

Ich hatte gerade das gleiche Problem. Ich habe eine Variable deklariert, die meinen Text mit dem @.

@{
   var twitterSite = "@MyTwitterSite";
}

...

<meta name="twitter:site" content="@twitterSite">

6voto

Alan Punkte 101

Das funktioniert bei mir

<meta name="author" content="Alan van Buuren @("@Alan_van_Buuren")">
Oder Sie können verwenden: @@Alan_van_Buuren

D

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X