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

时间:2010-09-02 10:35:14

标签: razor asp.net-mvc-3

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

  

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

如何逃脱'@'字符?

15 个答案:

答案 0 :(得分:825)

@@应该这样做。

答案 1 :(得分:132)

Razor @ escape char to symbols ...

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

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

答案 2 :(得分:37)

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

答案 3 :(得分:32)

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

因此:

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

将是:

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

答案 4 :(得分:18)

我更喜欢使用@ Html.Raw(&#34; @&#34;)

而不是HTML实体

答案 5 :(得分:12)

@@是Razor视图中@的转义字符,如上所述。

然而,当'@'只是一个'@'并且它标记C#(或VB.Net)代码时,Razor会尝试解决问题。其中一个主要用途是识别Razor视图中的电子邮件地址 - 没有必要转义电子邮件地址中的@字符。

答案 6 :(得分:8)

关于@RazorCodePart1 @@ @RazorCodePart2的问题,您需要按顺序:

@RazorCodePart1 @:@@ @RazorCodePart2

我知道,它看起来有点奇怪,但它有效,并且会在代码块之间找到文字字符'@'。

答案 7 :(得分:6)

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

表示我的文本
@{
   var twitterSite = "@MyTwitterSite";
}

...

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

答案 8 :(得分:4)

这项工作对我来说

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

或者yoy可以使用: @@ Alan_van_Buuren

:d

答案 9 :(得分:1)

我尝试了上面的所有选项但都没有效果。这就是我的工作:

@{
    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很酷。

答案 10 :(得分:1)

您可以使用@@来实现此目的。 与var email = firstName + '\@@' + domain;

一样

答案 11 :(得分:1)

只需在CSHTML文件中添加变量即可 var myVariable = @"@";

并将其添加到您的布局中 var myVariable = @"@";

答案 12 :(得分:0)

我无法在占位符属性中使用任何这些,所以我使用了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

答案 13 :(得分:0)

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

例如: 如果测试分配了值 即@ {var test =“ ABC”} 那么您可以通过将html部分中的cshtml页面上的@test设置为@test来获取值。 否则,可以简单地用作@ Html.DisplayName(“ test”)

答案 14 :(得分:0)

我知道这个问题很旧,但是我尝试了以上所有方法,但是它没有帮助我在URL内的ASP.NET完整框架(MVC 5)中转义字符“ @”。不过,基于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