110

I'm trying to output some Twitter handles in ASP.NET MVC3 in conjunction with the Twitter @Anywhere API, and I haven't been able to figure out how to actually escape the "@" symbol in a Razor view.

Does anyone know what the syntax is for escaping the "@" character in Razor?

I've tried using <text></text> and that results in a JIT error.

arcain
  • 14,920
  • 6
  • 55
  • 75
Aaronontheweb
  • 8,224
  • 6
  • 32
  • 61

5 Answers5

164

You have to use @@ to escape the @ symbol.

One important thing to notice is that you DO NOT need to escape the @ symbol when it exists within an email address. Razor should be smart enough to figure that out on its own.

BSMP
  • 4,596
  • 8
  • 33
  • 44
JasCav
  • 34,458
  • 20
  • 113
  • 170
32

If you are adding Twitter meta tags

and your Twitter username is, say, foobar

it should look like this

<meta name="twitter:site" content=@("@foobar")>
boop
  • 7,413
  • 13
  • 50
  • 94
Matt
  • 33,328
  • 25
  • 83
  • 97
20

if you need to comment @ symbols in css code and just @@ wont work, use this:

@("@@font-face"){ ... css ...}
Lin-Art
  • 4,933
  • 2
  • 26
  • 31
4

I had yet another odd case: pass '@' + @Model.SomeProperty to a link href.

The best solution for this case was given IMO in this answer to a similar question. Both @@ and @: didn't work while using the html code &#64; would complicate things.

So, my code was <a href="~/path/?query=@('@')@Model.SomePropery">

@Html.Raw('@')@Model.SomePropery would have worked as well.

Community
  • 1
  • 1
Tiberiu Craciun
  • 3,231
  • 1
  • 13
  • 12
0

If you are adding Schema.org JSON-LD Tags, @Matt's answer worked for me:

  ....
  @("@context"): "https://schema.org",
  ....
JClarkCDS
  • 184
  • 2
  • 9