Экранирование символа @ в Razor View Engine
У меня возникла проблема при создании примерного сайта на ASP.NET MVC 3 с использованием Razor в качестве движка представлений. Синтаксис Razor начинается с символа @
, например, @RenderBody()
. Когда я пишу @test
на своей странице .cshtml, возникает ошибка парсинга:
CS0103: Имя 'test' не существует в текущем контексте
Как мне избежать интерпретации символа '@'?
5 ответ(ов)
В этом случае можно использовать @@
. Это должно сработать.
В данном случае, использование @Html.Raw("@")
действительно может показаться более надежным по сравнению с @@
, так как оно гарантирует, что символ @
будет правильно отображен, даже в случаях, когда @@
может не сработать.
Таким образом, ваша строка:
<meta name="twitter:site" content="@twitterSite">
может быть преобразована в:
<meta name="twitter:site" content="@Html.Raw("@")twitterSite">
Это позволит избежать проблем с экранированием и гарантировать корректное отображение значения переменной twitterSite
в метатегах.
В данном случае рекомендуется использовать <text></text>
, однако более простой способ — это @:
, который может быть удобнее в некоторых ситуациях. Выбор метода зависит от ваших предпочтений и контекста задачи.
Вместо использования HTML-сущности, я предпочитаю использовать @Html.Raw("@")
. Это позволяет отобразить символ "@" в HTML без его экранирования, что делает вывод более чистым и легко читаемым. Вы можете просто вставить этот код в ваш Razor-шаблон, и он отобразит символ "@" так, как вы ожидаете, без дополнительной обработки.
Для вопроса о @RazorCodePart1 @@ @RazorCodePart2
вам необходимо использовать следующую последовательность:
@RazorCodePart1 @:@@ @RazorCodePart2
Да, это выглядит немного странно, но это работает и позволяет вам получить символ '@' между кодовыми блоками.
Обнаружено потенциально опасное значение Request.Form, полученное от клиента
Можно ли установить неограниченную длину для maxJsonLength в web.config?
Как создать выпадающий список из enum в ASP.NET MVC?
ASP.NET MVC - Установка пользовательского IIdentity или IPrincipal
ASP.NET Веб-сайт или ASP.NET Веб-приложение?