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"@"?

481
demandé sur BoltClock 2010-09-02 14:35:14

14 réponses

@@ devrait suffire.

762
répondu Tobiasopdenbrouw 2012-04-17 14:45:51

Rasoir @ escape char de symboles...

<img src="..." alt="Find me on twitter as @("@username")" />

ou

<img src="..." alt="Find me on twitter as @("@")username" />
119
répondu Emre Karahan 2013-01-29 13:19:12

utiliser <text></text> ou de la façon la plus facile @:

36
répondu Kasper Skov 2011-07-14 20:13:46

@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">
27
répondu Rosue Don-Chip Walford 2016-03-25 20:46:02

au lieu de l'entité HTML je préfère l'utilisation de @Html.Raw ("@ ")

17
répondu CLRBTH 2014-03-30 16:30:54

@ @ 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.

12
répondu Alfamale 2010-09-13 13:48:13

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.

8
répondu DragonDTG 2011-10-07 18:37:49

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">
5
répondu watfy 2015-03-22 15:30:23

ce travail pour moi

<meta name="author" content="Alan van Buuren @("@Alan_van_Buuren")">

ou yoy peut utiliser: @@Alan_van_Buuren

: d

2
répondu Alan 2017-08-24 17:37:45

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.

1
répondu folorunso joseph 2015-10-31 13:23:54

vous pouvez utiliser @@ à cette fin. Comme var email = firstName + '\@@' + domain;

1
répondu Abdus Salam Azad 2016-11-24 08:36:54

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>

0
répondu Speedyjet 2017-10-06 12:24:08

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&#64;lastname.com"/>

Voir plus d'exemples ici. https://www.dvteclipse.com/documentation/svlinter/How_to_use_special_characters_in_XML.3F.html

0
répondu Terje Solem 2018-01-27 10:56:42

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")

0
répondu Pavithra 2018-06-25 09:53:08