Escape @ personaggio nel motore di visualizzazione del rasoio


561

Sto creando un sito ASP.NET MVC 3 di esempio utilizzando Razor come motore di visualizzazione. La sintassi del rasoio inizia con il @carattere, ad es @RenderBody(). Se scrivo @test sulla mia pagina cshtml mi dà un errore di analisi

CS0103: Il nome 'test' non esiste nel contesto corrente

Come posso sfuggire al carattere "@"?


1
In C #, puoi contrassegnare le parole chiave con un @ per trattarle come nomi di variabili anziché parole chiave. Con tutto quello che so, sembra impossibile usare parole chiave riservate in Razor in questo modo.
Smorfia di disperazione,

1
@GrimaceofDespair il modo per contrassegnare le parole chiave come variabili è racchiudere il secondo @tra parentesi graffe. Sono riuscito a farlo funzionare scrivendolo in questo modo:@(@new)
strizzwald,

Risposte:


904

@@ dovrebbe farlo.


9
In questo caso non sembra funzionare: @RazorCodePart1 @@ @RazorCodePart2ad esempio un letterale @ tra due frammenti di codice Razor.
Josh M.,

27
prova <text> </text> o @:
Kasper Skov

89
La soluzione migliore sarebbe utilizzare la stringa di caratteri con codifica HTML per il carattere @: & # 64;
WoIIe

9
Ho un <style>tag nella mia pagina di rasoio, che deve incorporare una direttiva '@media {}', quindi la codifica html non è un'opzione; funziona solo @@.
Triynko,

12
In href usa @ ("@")
Asiri Dissanayaka il

145

Razor @ escape char ai simboli ...

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

o

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

3
Questo metodo sembra il migliore in quanto funzionerà anche per roba @media css, mentre il modo dell'entità HTML probabilmente non lo farà.
ChrisF,

1
Bello! Grazie mille :)
Ashkan Sirous,

1
L'hai inchiodato, grazie :)
Pankaj Parkar,

1
Ha funzionato bene Grazie.
Orione,

1
Fantastico, trovo questo codice più facile da capire per tutti
achecopar,

39

utilizzare <text></text>o nel modo più semplice@:


È strano che la sintassi della sequenza di caratteri @: @: non funzioni per me, mentre provo ad aggiornare il mio progetto ASP.NET MVC 3 a MVC4. L'eccezione che ottengo è: "": "non è valido all'inizio di un blocco di codice. Sono validi solo identificatori, parole chiave, commenti" ("e" {"sono validi."
Michael R

@Michael È strano. Devono averlo rimosso nella versione 4.
Kasper Skov,

Ciao Kasper Skov, ho scoperto che il problema @: in realtà non era correlato a @: affatto. Era collegato all'uso inutile di @Model, in un blocco @if () {}. La correzione consisteva nel rilasciare il segno at sul modello. Devo evitare di usare @ quando si è già nell'ambito del server. stackoverflow.com/questions/12809855/…
Michael R,

38

@Html.Raw("@")mi sembra anche più affidabile di @@, poiché non in tutti i casi @@scapperà.

Perciò:

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

sarebbe:

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

E come posso usarlo su un testo enorme con diversi paragrafi? Ho provato con `invece di" ma il risultato è discutibile. Nessun errore nelle righe vuote ma errore nel carattere ".
EPurpl3,

24

Invece di entità HTML preferisco l'uso di @Html.Raw("@").


12

@@ è il carattere di escape per @ nelle viste Razor come indicato sopra.

Razor tuttavia cerca di capire quando un '@' è solo un '@' e dove segna il codice C # (o VB.Net). Uno degli usi principali per questo è identificare gli indirizzi e-mail all'interno di una vista Rasoio - non dovrebbe essere necessario sfuggire al carattere @ in un indirizzo e-mail.


Non ho trovato un modo per Razor / VB.net e usare Prismjs. Ho provato tutto sopra per <a href="@Url.Action("Edit", "Antigen", Nuovo con {Key .id = item.AntigenId})" class="btn-xs btn-primary"> Modifica </ a>
JoshYates1980,

8

Per la domanda su @RazorCodePart1 @@ @RazorCodePart2, è necessario per la sequenza:

@RazorCodePart1 @:@@ @RazorCodePart2

Lo so, sembra un po 'strano, ma funziona e ti porterà il carattere letterale "@" tra i blocchi di codice.


7

Ho appena avuto lo stesso problema. Ho dichiarato una variabile inserendo il mio testo con la @.

@{
   var twitterSite = "@MyTwitterSite";
}

...

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

Questo è stato l'unico che ha funzionato per me ed è valido per i debugger Open Graph.
Ciprian,

4

questo lavoro per me

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

Oppure puoi usare: @@ Alan_van_Buuren

: D


1

È possibile utilizzare @@ per questo scopo. Piacevar email = firstName + '\@@' + domain;


1

basta aggiungere una variabile nel file CSHTML var myVariable = @"@";

e aggiungilo al tuo layout <span class="my-class"><a href="@myVariale" target="_blank" >link text</a></span>


0

Ho provato tutte le opzioni sopra e nessuna ha funzionato. Questo è quello che ho fatto che ha funzionato:

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

<td>Email</td>
<td>
   <input type="text" id="txtEmail" required name="email" pattern=@str /> 
</td>

Ho creato una variabile stringa e vi ho passato tutto il codice di pattern RegEx, quindi ho usato la variabile nell'html e Razor è stato bravo con esso.



0

In realtà @ dovrebbe essere usato con le parole chiave della sintassi Razor o con la variabile / modello per associare un valore.

Ad esempio: se test è assegnato con un valore, ad esempio @ {var test = "ABC"}, è possibile ottenere il valore dalle impostazioni poiché @test è ovunque la pagina cshtml nella parte html. in caso contrario, utilizzare semplicemente come @ Html.DisplayName ("test")


0

So che questa domanda è vecchia, ma ho provato tutto quanto sopra e non mi ha aiutato a sfuggire al carattere "@" nel framework completo ASP.NET (MVC 5) all'interno di un URL. Basato sulla risposta di Terje Solem, il codice UTF-8 ha %40funzionato per me. questo è l'URL originale che stavo cercando di raggiungere:

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

e con il codice in esso:

https://unpkg.com/%40google/markerclustererplus@4.0.1/dist/markerclustererplus.min.js
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.