我正在创建一个示例ASP。NET MVC 3站点使用Razor作为视图引擎。razor语法以@字符开始,例如@ renderbody()。如果我在我的cshtml页面上写@test,它会给我解析错误

CS0103:名称“test”在当前上下文中不存在

如何转义“@”字符?


当前回答

我不能让这些在占位符属性内工作,所以我使用xml特殊字符。

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

点击这里查看更多示例。 https://www.dvteclipse.com/documentation/svlinter/How_to_use_special_characters_in_XML.3F.html

其他回答

我知道这个问题很老了,但我尝试了上面所有的方法,但它并没有帮助我在ASP中转义字符“@”。NET框架(MVC 5)内的URL。根据Terje Solem的回答,UTF-8代码%40适合我。这是我试图到达的原始URL:

https://unpkg.com/@google/markerclustererplus@4.0.1/dist/markerclustererplus.min.js

这是在我的代码中工作的:

https://unpkg.com/%40google/markerclustererplus@4.0.1/dist/markerclustererplus.min.js

实际上@应该与Razor语法关键字或变量/模型一起使用来绑定值。

如: 如果test被赋值 即@ {var test = "ABC"} 然后你可以通过设置得到这个值,因为@test anywhere是CSHTML页面的HTML部分。 否则,简单使用@Html.DisplayName("test")

比起HTML实体,我更喜欢使用@ HTML . raw(“@”)。

对于关于@RazorCodePart1 @@ @RazorCodePart2的问题,需要按照以下顺序:

@RazorCodePart1 @:@@ @RazorCodePart2

我知道,这看起来有点奇怪,但它可以工作,并将在代码块之间为您提供文字字符“@”。

@ html . raw(“@”)在我看来甚至比@@更可靠,因为并非在所有情况下@@都会被转义。

因此:

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

是:

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