转义@字符在剃刀视图引擎

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

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

如何转义“@”字符?

285675 次浏览

@@应该这样做。

@@是前面提到的Razor视图中@的转义字符。

然而,Razor确实试图找出什么时候“@”只是一个“@”,以及它在哪里标记c#(或VB.Net)代码。它的主要用途之一是在Razor视图中识别电子邮件地址——不需要在电子邮件地址中转义@字符。

使用<text></text>或更简单的方法@:

对于关于@RazorCodePart1 @@ @RazorCodePart2的问题,您需要执行以下顺序:

@RazorCodePart1 @:@@ @RazorCodePart2

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

剃刀@转义字符符号…

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

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

而不是HTML实体,我更喜欢使用@Html.Raw("@")

我也遇到了同样的问题。我用@声明了一个变量。

@{
var twitterSite = "@MyTwitterSite";
}


...


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

我尝试了上面所有的方法,没有一个奏效。这就是我所做的工作:

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

我创建了一个字符串变量,并将所有的RegEx模式代码传递给它,然后在html中使用该变量,Razor对它很酷。

这对我很有用

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

或者你可以使用: @@Alan_van_Buuren < / p >

: D

在我看来,@Html.Raw("@")似乎比@@更可靠,因为不是在所有情况下@@都会逃脱。

因此:

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

是:

<meta name="twitter:site" content="@Html.Raw("@")twitterSite">
你可以使用@@来达到这个目的。 像# EYZ0 < / p >

在CSHTML文件中添加一个变量 # EYZ0 < /代码> < / p >

并将其添加到您的布局中 # EYZ0 < /代码> < / p >

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

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

在这里看到更多例子。 # EYZ0 < / p >

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

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

我知道这个问题很老了,但我试了上面所有的方法,都没能帮我摆脱“"@"”这个字。在ASP。NET框架(MVC 5)内的URL。根据Terje Solem的回答,UTF-8代码%40对我有用。这是我试图到达的原始URL:

# EYZ0

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

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