6

Экранирование символа @ в Razor View Engine

1

У меня возникла проблема при создании примерного сайта на ASP.NET MVC 3 с использованием Razor в качестве движка представлений. Синтаксис Razor начинается с символа @, например, @RenderBody(). Когда я пишу @test на своей странице .cshtml, возникает ошибка парсинга:

CS0103: Имя 'test' не существует в текущем контексте

Как мне избежать интерпретации символа '@'?

5 ответ(ов)

11

В этом случае можно использовать @@. Это должно сработать.

0

В данном случае, использование @Html.Raw("@") действительно может показаться более надежным по сравнению с @@, так как оно гарантирует, что символ @ будет правильно отображен, даже в случаях, когда @@ может не сработать.

Таким образом, ваша строка:

<meta name="twitter:site" content="@twitterSite">

может быть преобразована в:

<meta name="twitter:site" content="@Html.Raw("@")twitterSite">

Это позволит избежать проблем с экранированием и гарантировать корректное отображение значения переменной twitterSite в метатегах.

0

В данном случае рекомендуется использовать <text></text>, однако более простой способ — это @:, который может быть удобнее в некоторых ситуациях. Выбор метода зависит от ваших предпочтений и контекста задачи.

0

Вместо использования HTML-сущности, я предпочитаю использовать @Html.Raw("@"). Это позволяет отобразить символ "@" в HTML без его экранирования, что делает вывод более чистым и легко читаемым. Вы можете просто вставить этот код в ваш Razor-шаблон, и он отобразит символ "@" так, как вы ожидаете, без дополнительной обработки.

0

Для вопроса о @RazorCodePart1 @@ @RazorCodePart2 вам необходимо использовать следующую последовательность:

@RazorCodePart1 @:@@ @RazorCodePart2

Да, это выглядит немного странно, но это работает и позволяет вам получить символ '@' между кодовыми блоками.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь