Razor ViewEngine: Como faço para escapar do símbolo “@”?


101

Estou tentando gerar alguns identificadores do Twitter na ASP.NET MVC3 em conjunto com a API @Anywhere do Twitter e não consegui descobrir como escapar do símbolo "@" em um modo de exibição do Razor.

Alguém sabe qual é a sintaxe para escapar do caractere "@" no Razor?

Tentei usar <text></text>e isso resultou em um erro JIT.


2
Você também pode usar a entidade HTML &#64;.
rsenna de

Respostas:


143

Você deve usar @@ para escapar do símbolo @.

Uma coisa importante a observar é que você NÃO precisa escapar do símbolo @ quando ele existe em um endereço de e-mail. Razor deve ser inteligente o suficiente para descobrir isso sozinho.


4
<a href="" title="this @@ não funcionará"> </a>, erro de sintaxe no VS e erro do analisador em tempo de execução.
Tien Do

1
@Tien veja o último código de caractere HTML aqui funcionou para mim: stackoverflow.com/a/13584640/84206
AaronLS

25

Se você estiver adicionando meta tags do Twitter

e seu nome de usuário do Twitter é, digamos, foobar

deveria ser assim

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

16

se você precisar comentar os símbolos @ no código css e apenas @@ não funcionar, use isto:

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

1
Este é o melhor método, pois a entidade HTML não é útil dentro do CSS.
ChrisF

2

Tive mais um caso estranho: passe '@' + @Model.SomePropertypara um link href.

A melhor solução para este caso foi dada IMO nesta resposta a uma pergunta semelhante. Ambos @@e @:não funcionavam ao usar o código html &#64;complicaria as coisas.

Então, meu código era <a href="~/path/?query=@('@')@Model.SomePropery">

@Html.Raw('@')@Model.SomePropery teria funcionado também.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.