Razor ViewEngine: come faccio a sfuggire al simbolo "@"?


101

Sto cercando di generare alcuni handle di Twitter in ASP.NET MVC3 insieme all'API @Anywhere di Twitter e non sono riuscito a capire come sfuggire effettivamente al simbolo "@" in una vista Razor.

Qualcuno sa qual è la sintassi per sfuggire al carattere "@" in Razor?

Ho provato a utilizzare <text></text>e questo si traduce in un errore JIT.


2
Puoi anche utilizzare l'entità HTML &#64;.
rsenna

Risposte:


143

Devi usare @@ per sfuggire al simbolo @.

Una cosa importante da notare è che NON è necessario eseguire l'escape del simbolo @ quando esiste all'interno di un indirizzo e-mail. Razor dovrebbe essere abbastanza intelligente da capirlo da solo.


4
<a href="" title="this @@ non funzionerà"> </a>, sia errore di sintassi in VS che errore del parser in runtime.
Tien Do

1
@Tien vedi l'ultimo codice di caratteri HTML qui ha funzionato per me: stackoverflow.com/a/13584640/84206
AaronLS

25

Se stai aggiungendo meta tag Twitter

e il tuo nome utente Twitter è, diciamo, foobar

Dovrebbe sembrare come questo

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

16

se hai bisogno di commentare i simboli @ nel codice css e solo @@ non funzionerà, usa questo:

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

1
Questo è il metodo migliore in quanto l'entità HTML non è utile all'interno dei CSS.
ChrisF

2

Ho avuto ancora un altro caso strano: passare '@' + @Model.SomePropertya un link href.

La migliore soluzione per questo caso è stata data da IMO in questa risposta a una domanda simile. Entrambi @@e @:non funzionavano durante l'utilizzo del codice html &#64;complicherebbero le cose.

Quindi, il mio codice era <a href="~/path/?query=@('@')@Model.SomePropery">

@Html.Raw('@')@Model.SomePropery avrebbe funzionato anche.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.