Échapper @ caractère moteur vue de rasoir
-
26-09-2019 - |
Question
Je suis en train de créer un échantillon ASP.NET MVC 3 site en utilisant rasoir moteur de vue. La syntaxe de rasoir commence par caractère, par exemple @
@RenderBody()
. Si je vous écris @test sur ma page cshtml il me donne l'erreur Parse
CS0103: Le nom 'test' n'existe pas dans le contexte actuel
Comment puis-je échapper à caractère '@'?
La solution
@@
devrait le faire.
Autres conseils
Razor @ évasion char symboles ...
<img src="..." alt="Find me on twitter as @("@username")" />
ou
<img src="..." alt="Find me on twitter as @("@")username" />
utilisation <text></text>
ou @:
façon plus facile
@Html.Raw("@")
me semble être encore plus fiable que @@
, puisque non dans tous les cas @@
échappera.
Par conséquent:
<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'échappement pour @ dans les vues de rasoir comme indiqué ci-dessus.
Razor tente cependant de travailler quand un « @ » est juste un « @ » et où les marques du code C # (ou VB.Net). L'une des principales utilisations de c'est d'identifier les adresses e-mail dans une vue Razor - il ne devrait pas être nécessaire pour échapper au caractère @ dans une adresse e-mail.
Pour la question sur @RazorCodePart1 @@ @RazorCodePart2
, vous devez la séquence:
@RazorCodePart1 @:@@ @RazorCodePart2
Je sais, il semble un peu bizarre, mais cela fonctionne et vous obtiendrez le caractère littéral « @ » entre les blocs de code.
Je viens d'avoir le même problème. Je déclarais une variable de mettre 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")">
Vous pouvez aussi utiliser: @@ Alan_van_Buuren
: D
J'ai essayé toutes les options ci-dessus et aucun travaillé. Voilà ce que je l'ai fait travaillé:
@{
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>
Je créé une varible chaîne et a passé tout le code de modèle RegEx dans, puis utilisé la variable dans le code html et Razor était cool avec elle.
Vous pouvez utiliser @@ à cet effet.
Comme var email = firstName + '\@@' + domain;
il suffit d'ajouter une variable dans le fichier CSHTML
var myVariable = @"@";
et l'ajouter à votre mise en page
<span class="my-class"><a href="@myVariale" target="_blank" >link text</a></span>
Je ne pouvais pas obtenir l'un de ces travaux à l'intérieur de mon attribut d'espace réservé, donc je xml caractère spécial.
<input type="text" placeholder="fex: firstname@lastname.com"/>
Voir d'autres exemples ici. https://www.dvteclipse.com/documentation/svlinter/How_to_use_special_characters_in_XML.3F. html
En fait @ doit être utilisé avec le rasoir de mots-clés ou à la variable / modèle pour lier une valeur.
Pour exemple: si le test est affecté à la valeur i.e. @ {var test = "ABC"} alors vous pouvez obtenir la valeur par des paramètres comme @test partout la page cshtml en partie html. sinon, l'utilisation simple @ Html.DisplayName ( "test")