web-dev-qa-db-fra.com

Escape @ character dans le moteur de vue rasoir

Je crée un exemple de site ASP.NET MVC 3 en utilisant Razor comme moteur de visualisation. 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 "@"?

525
ajay_whiz

@@ devrait le faire.

844
Tobiasopdenbrouw

Razor @ escape char to symboles ...

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

ou

<img src="..." alt="Find me on Twitter as @("@")username" />
137
Emre Karahan

utilisez <text></text> ou la méthode la plus simple @:

37
Kasper Skov

@Html.Raw("@") me semble être encore plus fiable que @@, car dans tous les cas, @@ ne s'échappera pas.

Donc:

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

serait:

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

Au lieu d'une entité HTML, je préfère utiliser @Html.Raw("@").

19
CLRBTH

@@ est le caractère d'échappement pour les vues @ dans Razor, comme indiqué ci-dessus.

Razor essaie cependant de déterminer quand un "@" est juste un "@" et où il marque le code C # (ou VB.Net). L’une des principales utilisations de cette fonction est d’identifier les adresses électroniques dans une vue Razor - il ne devrait pas être nécessaire d’échapper au caractère @ dans une adresse électronique.

12
Alfamale

Pour la question sur @RazorCodePart1 @@ @RazorCodePart2, vous devez suivre la séquence suivante:

@RazorCodePart1 @:@@ @RazorCodePart2

Je sais, cela semble un peu étrange, mais cela fonctionne et vous obtiendrez le caractère littéral '@' entre les blocs de code.

8
DragonDTG

Je viens d'avoir 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">
6
watfy

ce travail pour moi

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

Ou vous pouvez utiliser: @@ Alan_van_Buuren

:RÉ

4
Alan

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éé une variable de chaîne et passé tout le code du modèle RegEx, puis utilisé la variable dans le code HTML, et Razor était cool avec elle.

1
folorunso joseph

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

1
Abdus Salam Azad

il suffit d'ajouter une variable dans le fichier CSHTML var myVariable = @"@"; </ code>

et l'ajouter à votre mise en page <span class="my-class"><a href="@myVariale" target="_blank" >link text</a></span> </ code>

1
Speedyjet

En réalité, @ devrait être utilisé avec les mots-clés de la syntaxe Razor ou avec la variable/le modèle pour lier une valeur.

Par exemple, si test est affecté à la valeur i.e @ {var test = "ABC"}, vous pouvez obtenir la valeur par les paramètres suivants: @test n'importe où est la page cshtml dans la partie html. sinon, utilisation simple sous @ Html.DisplayName ("test")

0
Pavithra

Je ne pouvais obtenir aucun d'entre eux pour fonctionner à l'intérieur de mon attribut d'espace réservé, alors j'ai utilisé le caractère spécial xml.

<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
Terje Solem