Razor ViewEngine: Как избежать символа «@»?

101

Я пытаюсь вывести некоторые дескрипторы Twitter в ASP.NET MVC3 в сочетании с Twitter @Anywhere API, и мне не удалось понять, как на самом деле избежать символа «@» в представлении Razor.

Кто-нибудь знает, каков синтаксис экранирования символа «@» в Razor?

Я пробовал использовать, <text></text>и это привело к ошибке JIT.

Aaronontheweb
источник
2
Вы также можете использовать объект HTML &#64;.
rsenna

Ответы:

143

Вы должны использовать @@, чтобы избежать символа @.

Следует отметить одну важную вещь: вам НЕ нужно экранировать символ @, если он присутствует в адресе электронной почты. Razor должен быть достаточно умен, чтобы понять это самостоятельно.

JasCav
источник
4
<a href="" title="this @@ не будет работать"> </a>, синтаксическая ошибка в VS и ошибка парсера во время выполнения.
Tien Do
1
@Tien см. Последний код символа HTML здесь сработал для меня: stackoverflow.com/a/13584640/84206
AaronLS
25

Если вы добавляете метатеги Twitter

и ваше имя пользователя Twitter, скажем, foobar

это должно выглядеть так

<meta name="twitter:site" content=@("@foobar")>
Мэтт
источник
16

если вам нужно прокомментировать символы @ в коде css и просто @@ не работает, используйте это:

@("@@font-face"){ ... css ...}
Лин-Арт
источник
1
Это лучший метод, поскольку сущность HTML бесполезна внутри CSS.
ChrisF
2

У меня был еще один странный случай: перейти '@' + @Model.SomePropertyпо ссылке href.

Лучшее решение для этого случая было дано ИМО в этом ответе на аналогичный вопрос. И то, @@и другое @:не сработало, а использование html-кода &#64;усложнило бы ситуацию.

Итак, мой код был <a href="~/path/?query=@('@')@Model.SomePropery">

@Html.Raw('@')@Model.SomePropery тоже сработало бы.

Тибериу Крачун
источник