可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
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?
回答1:
回答2:
Razor @ escape char to symbols...
<img src=\"...\" alt=\"Find me on twitter as @(\"@username\")\" />
or
<img src=\"...\" alt=\"Find me on twitter as @(\"@\")username\" />
回答3:
use <text></text>
or the easier way @:
回答4:
@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\">
回答5:
Instead of HTML entity I prefer the use of @Html.Raw(\"@\")
回答6:
@@ 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.
回答7:
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.
回答8:
I just had the same problem. I declared a variable putting my text with the @.
@{
var twitterSite = \"@MyTwitterSite\";
}
...
<meta name=\"twitter:site\" content=\"@twitterSite\">
回答9:
this work for me
<meta name=\"author\" content=\"Alan van Buuren @(\"@Alan_van_Buuren\")\">
Or yoy can use:
@@Alan_van_Buuren
:D
回答10:
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.
回答11:
You can use @@ for this purpose.
Like var email = firstName + \'\\@@\' + domain;
回答12:
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>
回答13:
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@lastname.com\"/>
See more examples here.
https://www.dvteclipse.com/documentation/svlinter/How_to_use_special_characters_in_XML.3F.html
回答14:
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\")