it-swarm.com.de

Escape @ character in der Razor View Engine

Ich erstelle eine ASP.NET MVC 3-Beispielsite mit Razor als Ansichtsmodul. Die Rasierersyntax beginnt mit dem Zeichen @, z. @RenderBody(). Wenn ich @test auf meine cshtml-Seite schreibe, erhalte ich einen Analysefehler

CS0103: Der Name 'Test' ist im aktuellen Kontext nicht vorhanden

Wie entkomme ich dem Zeichen "@"?

525
ajay_whiz

@@ sollte es tun.

844

Razor @ Escape Char zu Symbolen ...

<img src="..." alt="Find me on Twitter as @("@username")" />

oder

<img src="..." alt="Find me on Twitter as @("@")username" />
137
Emre Karahan

benutze <text></text> oder den einfacheren Weg @:

37
Kasper Skov

@Html.Raw("@") scheint mir noch zuverlässiger zu sein als @@, da nicht in allen Fällen @@ entkommt.

Deshalb:

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

wäre:

<meta name="Twitter:site" content="@Html.Raw("@")twitterSite">

Anstelle einer HTML-Entität bevorzuge ich die Verwendung von @Html.Raw("@").

19
CLRBTH

@@ ist das Escapezeichen für @ in Razor-Ansichten, wie oben angegeben.

Razor versucht jedoch herauszufinden, wann ein '@' nur ein '@' ist und wo es C # - (oder VB.Net-) Code markiert. Eine der Hauptanwendungen hierfür ist das Identifizieren von E-Mail-Adressen in einer Razor-Ansicht. Es sollte nicht erforderlich sein, das @ -Zeichen in einer E-Mail-Adresse zu maskieren.

12
Alfamale

Für die Frage zu @RazorCodePart1 @@ @RazorCodePart2 müssen Sie folgende Reihenfolge einhalten:

@RazorCodePart1 @:@@ @RazorCodePart2

Ich weiß, es sieht ein bisschen seltsam aus, aber es funktioniert und Sie erhalten das wörtliche Zeichen "@" zwischen den Codeblöcken.

8
DragonDTG

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

@{
   var twitterSite = "@MyTwitterSite";
}

...

<meta name="Twitter:site" content="@twitterSite">
6
watfy

diese Arbeit für mich

<meta name="author" content="Alan van Buuren @("@Alan_van_Buuren")">

Oder Sie können verwenden: @@ Alan_van_Buuren

: D

4
Alan

Ich habe alle oben genannten Optionen ausprobiert und keine hat funktioniert. Dies ist, was ich getan habe, das hat funktioniert:

@{
    string str = @"[a-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,3}$";
}

<td>Email</td>
<td>
   <input type="text" id="txtEmail" required name="email" [email protected] /> 
</td>

Ich habe eine Zeichenkettenvariable erstellt und den gesamten RegEx-Mustercode übergeben, dann die Variable im HTML-Code verwendet, und Razor war cool damit.

1

Sie können zu diesem Zweck @@ verwenden. Wie var email = firstName + '\@@' + domain;

1

fügen Sie einfach eine Variable in die CSHTML-Datei var myVariable = @"@"; </ code> ein

und fügen Sie es Ihrem Layout hinzu <span class="my-class"><a href="@myVariale" target="_blank" >link text</a></span> </ code>

1
Speedyjet

Eigentlich sollte @ mit den Razor-Syntax-Schlüsselwörtern oder mit der Variablen/dem Modell verwendet werden, um einen Wert zu binden.

Zum Beispiel: Wenn test mit dem Wert d. H. @ {Var test = "ABC"} belegt ist, können Sie den Wert über die Einstellungen abrufen, da @test sich an einer beliebigen Stelle in der HTML-Seite befindet. Andernfalls verwenden Sie einfach @ Html.DisplayName ("test").

0
Pavithra

Ich konnte keines davon in meinem Platzhalterattribut zum Laufen bringen, also habe ich ein xml-Sonderzeichen verwendet.

<input type="text" placeholder="fex: firstname&#64;lastname.com"/>

Weitere Beispiele finden Sie hier. https://www.dvteclipse.com/documentation/svlinter/How_to_use_special_characters_in_XML.3F.html

0
Terje Solem