关于asp.net mvc 3:在razor视图引擎中转义@字符

Escape @ character in razor view engine

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

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

我该如何转义"@"字符?


@@应该这样做。


razor@escape char转换为符号…

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

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


使用或更简单的方法@:


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

因此:

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

将是:

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

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


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

然而,Razor确实尝试在"@"只是一个"@"以及它标记C(或vb.net)代码的地方进行计算。它的主要用途之一是在Razor视图中标识电子邮件地址-不需要在电子邮件地址中转义@字符。


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

1
@RazorCodePart1 @:@@ @RazorCodePart2

我知道,它看起来有点奇怪,但是它可以工作,并且会在代码块之间得到文本字符"@"。


我也有同样的问题。我声明了一个变量,将文本与@放在一起。

1
2
3
4
5
6
7
@{
   var twitterSite ="@MyTwitterSite";
}

...

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


这是我的工作

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

或者可以使用:@@艾伦·范·布伦

D


只需在cshtml文件中添加一个变量
var myVariable = @"@";< /代码>

并将其添加到布局中
link text< /代码>


您可以将@@用于此目的。像var email = firstName + '\@@' + domain;一样


我尝试了上面所有的选择,但都没有成功。这就是我所做的工作:

1
2
3
4
5
6
7
8
@{
    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对此很酷。


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

Eg:如果给测试赋值即@var test="abc"然后您可以通过设置获得值,因为@test anywhere is cshtml page in html part。否则,简单地使用@html.displayname("test")。


我无法在占位符属性中使用这些字符,所以我使用了XML特殊字符。

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

请参阅此处的更多示例。https://www.dvteclipse.com/documentation/svlinter/how_to_use_special_characters_in_xml.3f.html