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


101

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

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

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


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

Ответы:


143

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

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


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 тоже сработало бы.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.