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.


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źć.


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")>

16

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

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

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ż.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.