Le caractère "Escape" du moteur razor view
je crée un échantillon ASP.NET site MVC 3 utilisant Razor comme moteur de vue. La syntaxe du rasoir commence par le caractère @
par exemple @RenderBody()
. Si j'écris @test sur ma page cshtml, cela me donne une erreur d'analyse
CS0103: le nom "test" n'existe pas dans le contexte actuel
comment échapper au caractère"@"?
14 réponses
Rasoir @ escape char de symboles...
<img src="..." alt="Find me on twitter as @("@username")" />
ou
<img src="..." alt="Find me on twitter as @("@")username" />
@Html.Raw("@")
me semble encore plus fiable que @@
, puisque dans tous les cas @@
ne s'échappera pas.
donc:
<meta name="twitter:site" content="@twitterSite">
serait:
<meta name="twitter:site" content="@Html.Raw("@")twitterSite">
au lieu de l'entité HTML je préfère l'utilisation de @Html.Raw ("@ ")
@ @ est le caractère d'évasion pour @ dans les vues de rasoir comme indiqué ci-dessus.
Razor essaie cependant de comprendre quand un " @ "est juste un" @ " et où il marque C# (ou VB.Net) code. L'une des principales utilisations est d'identifier les adresses e - mail dans une vue de rasoir-il ne devrait pas être nécessaire d'échapper au caractère @ dans une adresse e-mail.
pour la question sur @RazorCodePart1 @@ @RazorCodePart2
, vous avez besoin de la séquence:
@RazorCodePart1 @:@@ @RazorCodePart2
je sais, ça a l'air un peu bizarre, mais ça marche et ça vous donnera le caractère littéral '@' entre les blocs de code.
j'ai eu le même problème. J'ai déclaré une variable mettant mon texte avec le @.
@{
var twitterSite = "@MyTwitterSite";
}
...
<meta name="twitter:site" content="@twitterSite">
ce travail pour moi
<meta name="author" content="Alan van Buuren @("@Alan_van_Buuren")">
ou yoy peut utiliser: @@Alan_van_Buuren
: d
j'ai essayé toutes les options ci-dessus et aucune n'a fonctionné. C'est ce que j'ai fait qui a fonctionné:
@{
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>
j'ai créé un varible de chaîne et passé tout le code de motif RegEx dans elle, puis utilisé la variable dans le html, et Razor était cool avec elle.
vous pouvez utiliser @@ à cette fin.
Comme var email = firstName + '\@@' + domain;
il suffit d'ajouter une variable dans le fichier CSHTML
var myVariable = @"@";
et ajoutez-le à votre mise en page
<span class="my-class"><a href="@myVariale" target="_blank" >link text</a></span>
Je n'ai pu obtenir aucun de ceux-ci pour travailler à l'intérieur de mon attribut placeholder, donc j'ai utilisé xml caractère spécial.
<input type="text" placeholder="fex: firstname@lastname.com"/>
Voir plus d'exemples ici. https://www.dvteclipse.com/documentation/svlinter/How_to_use_special_characters_in_XML.3F.html
Actually @ doit être utilisé avec les mots clés de syntaxe Razor ou à la variable/model pour lier une valeur.
Pour Eg: si l'épreuve est affectée à la valeur j'.e @ { var test = "ABC" } ensuite, vous pouvez obtenir la valeur par les paramètres comme @test anywhere est la page cshtml dans la partie html. sinon, simple utilisation comme @Html.DisplayName ("test")