Escape @ Personagem no mecanismo Vista de Razor
-
26-09-2019 - |
Pergunta
Estou criando um site de amostra ASP.NET MVC 3 usando o Razor como Motor View. A sintaxe da navalha começa com @
personagem por exemplo @RenderBody()
. Se eu escrever @test na minha página cshtml, ele me dá um erro de análise
CS0103: o nome 'teste' não existe no contexto atual
Como faço para escapar do personagem '@'?
Solução
@@
deve fazer isso.
Outras dicas
Razor @ Escape char para símbolos ...
<img src="..." alt="Find me on twitter as @("@username")" />
ou
<img src="..." alt="Find me on twitter as @("@")username" />
usar <text></text>
ou da maneira mais fácil @:
@Html.Raw("@")
parece -me ser ainda mais confiável do que @@
, já que não em todos os casos @@
vai escapar.
Portanto:
<meta name="twitter:site" content="@twitterSite">
seria:
<meta name="twitter:site" content="@Html.Raw("@")twitterSite">
Em vez de entidade html, prefiro o uso de @Html.Raw("@")
.
@@ é o caractere de fuga para @ em vistas de barbear, conforme declarado acima.
O Razor, no entanto, tenta se exercitar quando um '@' é apenas um '@' e onde marca o código C# (ou vb.net). Um dos principais usos para isso é identificar endereços de email em uma visualização de barbear - não deve ser necessário escapar do caractere @ em um endereço de email.
Para a pergunta sobre @RazorCodePart1 @@ @RazorCodePart2
, você precisa para a sequência:
@RazorCodePart1 @:@@ @RazorCodePart2
Eu sei, parece um pouco estranho, mas funciona e lhe dará o personagem literal '@' entre os blocos de código.
Eu só tive o mesmo problema. Eu declarei uma variável colocando meu texto com o @.
@{
var twitterSite = "@MyTwitterSite";
}
...
<meta name="twitter:site" content="@twitterSite">
Este trabalho para mim
<meta name="author" content="Alan van Buuren @("@Alan_van_Buuren")">
Ou yoy pode usar: @@ alan_van_buuren
: D
Eu tentei todas as opções acima e nenhuma funcionou. Isso é o que eu fiz que funcionou:
@{
string str = @"[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$";
}
<td>Email</td>
<td>
<input type="text" id="txtEmail" required name="email" pattern=@str />
</td>
Criei uma varível de string e passei todo o código do padrão Regex para ele, depois usei a variável no HTML, e Razor foi legal com ele.
Você pode usar @@ para esse fim. Curti var email = firstName + '\@@' + domain;
Basta adicionar uma variável no arquivo cshtml
var myVariable = @"@";
e adicione ao seu layout
<span class="my-class"><a href="@myVariale" target="_blank" >link text</a></span>
Eu não conseguia que nenhum deles funcionasse dentro do meu atributo de espaço reservado, então usei o personagem especial XML.
<input type="text" placeholder="fex: firstname@lastname.com"/>
Veja mais exemplos aqui.https://www.dvteclipse.com/documentation/svliner/how_to_use_special_characters_in_xml.3f.html
Na verdade, @ deve ser usado com as palavras -chave da Sintaxe da Razor ou com a variável/modelo para vincular um valor.
Para por exemplo: se o teste for atribuído com valor ie @ {var test = "abc"}, você poderá obter o valor por configurações como @test em qualquer lugar é a página cshtml na parte html. Caso contrário, use simples como @html.displayname ("teste")