Escape @ character in razor view engine

asp.net Mvc-3RazorEscaping

asp.net Mvc-3 Problem Overview


I am creating a sample ASP.NET MVC 3 site using Razor as view engine. The razor syntax starts with @ character e.g. @RenderBody(). If I write @test on my cshtml page it gives me parse error

> CS0103: The name 'test' does not exist in the current context

How do I escape '@' character?

asp.net Mvc-3 Solutions


Solution 1 - asp.net Mvc-3

@@ should do it.

Solution 2 - asp.net Mvc-3

Razor @ escape char to symbols...

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

or

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

Solution 3 - asp.net Mvc-3

@Html.Raw("@") seems to me to be even more reliable than @@, since not in all cases @@ will escape.

Therefore:

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

would be:

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

Solution 4 - asp.net Mvc-3

use <text></text> or the easier way @:

Solution 5 - asp.net Mvc-3

Instead of HTML entity I prefer the use of @Html.Raw("@").

Solution 6 - asp.net Mvc-3

@@ is the escape character for @ in Razor views as stated above.

Razor does however try to work out when an '@' is just an '@' and where it marks C# (or VB.Net) code. One of the main uses for this is to identify email addresses within a Razor view - it should not be necessary to escape the @ character in an email address.

Solution 7 - asp.net Mvc-3

For the question about @RazorCodePart1 @@ @RazorCodePart2, you need to the sequence:

@RazorCodePart1 @:@@ @RazorCodePart2

I know, it looks a bit odd, but it works and will get you the literal character '@' between the code blocks.

Solution 8 - asp.net Mvc-3

I just had the same problem. I declared a variable putting my text with the @.

@{
   var twitterSite = "@MyTwitterSite";
}

...

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

Solution 9 - asp.net Mvc-3

this work for me

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

Or yoy can use: @@Alan_van_Buuren

:D

Solution 10 - asp.net Mvc-3

I know this question is old, but I tried all of the above and it didn't help me escape the character "@" in ASP.NET framework (MVC 5) inside a URL. Based on Terje Solem's answer though, the UTF-8 code %40 worked for me. this is the original URL I was trying to reach:

https://unpkg.com/@google/[email protected]/dist/markerclustererplus.min.js

this is what worked for me in my code:

https://unpkg.com/%40google/[email protected]/dist/markerclustererplus.min.js

Solution 11 - asp.net Mvc-3

I tried all the options above and none worked. This is what I did that worked :

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

I created a string varible and passed all the RegEx pattern code into it, then used the variable in the html, and Razor was cool with it.

Solution 12 - asp.net Mvc-3

You can use @@ for this purpose. Like var email = firstName + '\@@' + domain;

Solution 13 - asp.net Mvc-3

just add a variable in CSHTML file var myVariable = @"@";

and add it to your layout <span class="my-class"><a href="@myVariale" target="_blank" >link text</a></span>

Solution 14 - asp.net Mvc-3

I couldn't get any of these to work inside my placeholder attribute, so I used xml special character.

<input type="text" placeholder="fex: firstname&#64;lastname.com"/>

See more examples here. https://www.dvteclipse.com/documentation/svlinter/How_to_use_special_characters_in_XML.3F.html

Solution 15 - asp.net Mvc-3

Actually @ should be used with the Razor syntax Keywords or to the variable/model to bind a Value.

For Eg: if test is assigned with value i.e @ { var test = "ABC" } then you can get the value by settings as @test anywhere is cshtml page in html part. otherwise, simple use as @Html.DisplayName("test")

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionajay_whizView Question on Stackoverflow
Solution 1 - asp.net Mvc-3TobiasopdenbrouwView Answer on Stackoverflow
Solution 2 - asp.net Mvc-3Emre KarahanView Answer on Stackoverflow
Solution 3 - asp.net Mvc-3Rosue Don-Chip WalfordView Answer on Stackoverflow
Solution 4 - asp.net Mvc-3Kasper SkovView Answer on Stackoverflow
Solution 5 - asp.net Mvc-3CLRBTHView Answer on Stackoverflow
Solution 6 - asp.net Mvc-3AlfamaleView Answer on Stackoverflow
Solution 7 - asp.net Mvc-3DragonDTGView Answer on Stackoverflow
Solution 8 - asp.net Mvc-3watfyView Answer on Stackoverflow
Solution 9 - asp.net Mvc-3AlanView Answer on Stackoverflow
Solution 10 - asp.net Mvc-3Hector SotoView Answer on Stackoverflow
Solution 11 - asp.net Mvc-3folorunso josephView Answer on Stackoverflow
Solution 12 - asp.net Mvc-3Abdus Salam AzadView Answer on Stackoverflow
Solution 13 - asp.net Mvc-3SpeedyjetView Answer on Stackoverflow
Solution 14 - asp.net Mvc-3Terje SolemView Answer on Stackoverflow
Solution 15 - asp.net Mvc-3PavithraView Answer on Stackoverflow