Razor ViewEngine: Jak uniknąć symbolu „@”?

101

Próbuję wyprowadzić niektóre uchwyty Twittera w ASP.NET MVC3 w połączeniu z interfejsem API Twitter @Anywhere, ale nie byłem w stanie dowiedzieć się, jak faktycznie uciec od symbolu „@” w widoku Razor.

Czy ktoś wie, jaka jest składnia ucieczki znaku „@” w Razor?

Próbowałem używać, <text></text>a to powoduje błąd JIT.

Aaronontheweb
źródło
2
Możesz także użyć encji HTML &#64;.
rsenna

Odpowiedzi:

143

Musisz użyć @@, aby uniknąć symbolu @.

Jedną ważną rzeczą, na którą należy zwrócić uwagę, jest to, że NIE MUSISZ uciekać przed symbolem @, jeśli występuje on w adresie e-mail. Razor powinien być na tyle sprytny, by samemu to rozgryźć.

JasCav
źródło
4
<a href="" title="this @@ nie zadziała"> </a>, zarówno błąd składni w VS, jak i błąd parsera w czasie wykonywania.
Tien Do
1
@Tien zobacz ostatni kod znaków HTML, który tutaj zadziałał: stackoverflow.com/a/13584640/84206
AaronLS
25

Jeśli dodajesz metatagi na Twitterze

a Twoja nazwa użytkownika na Twitterze to powiedzmy foobar

To powinno wyglądać tak

<meta name="twitter:site" content=@("@foobar")>
Matt
źródło
16

jeśli chcesz skomentować symbole @ w kodzie css i po prostu @@ nie zadziała, użyj tego:

@("@@font-face"){ ... css ...}
Lin-Art
źródło
1
To najlepsza metoda, ponieważ encja HTML nie jest pomocna w CSS.
ChrisF
2

Miałem jeszcze jeden dziwny przypadek: przejście '@' + @Model.SomePropertydo odnośnika href.

Najlepsze rozwiązanie w tym przypadku dała IMO w tej odpowiedzi na podobne pytanie. Oba @@i @:nie działały podczas korzystania z kodu HTML &#64;, komplikowałyby sprawy.

Więc mój kod był <a href="~/path/?query=@('@')@Model.SomePropery">

@Html.Raw('@')@Model.SomePropery działałby również.

Tiberiu Craciun
źródło