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

aja*_*hiz 535 razor asp.net-mvc-3

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

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

如何逃脱'@'角色?

Tob*_*ouw 862

@@ 应该这样做.

  • 最好的解决方案是使用@ -character的HTML编码字符串:@ (88认同)
  • 尝试<text> </ text>或@: (27认同)
  • 在这种情况下,这似乎不起作用:`@ RazorCodePart1 @@ @ RazorCodePart2`,例如两个Razor代码片段之间的文字@. (9认同)
  • 我的剃刀页面中有一个`<style>`标签,它必须嵌入一个'@media {}'指令,所以html编码不是一个选项; 只有@@有效. (9认同)
  • 在href中使用@(“ @”) (8认同)

小智 140

Razor @ escape char to symbols ...

<img src="..." alt="Find me on twitter as @("@username")" />
Run Code Online (Sandbox Code Playgroud)

要么

<img src="..." alt="Find me on twitter as @("@")username" />
Run Code Online (Sandbox Code Playgroud)

  • 这种方法似乎是最好的,因为它也适用于@media css的东西,而HTML实体方式可能不会. (3认同)

Kas*_*kov 38

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


小智 34

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

因此:

<meta name="twitter:site" content="@twitterSite">
Run Code Online (Sandbox Code Playgroud)

将会:

<meta name="twitter:site" content="@Html.Raw("@")twitterSite">
Run Code Online (Sandbox Code Playgroud)


CLR*_*BTH 20

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


Alf*_*ale 12

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

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


Dra*_*DTG 8

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

@RazorCodePart1 @:@@ @RazorCodePart2
Run Code Online (Sandbox Code Playgroud)

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


小智 8

根据 Terje Solem 的回答,UTF-8 代码%40对我有用。这是我试图访问的原始 URL:

https://unpkg.com/@google/markerclustererplus@4.0.1/dist/markerclustererplus.min.js
Run Code Online (Sandbox Code Playgroud)

这在我的代码中对我有用:

https://unpkg.com/%40google/markerclustererplus@4.0.1/dist/markerclustererplus.min.js
Run Code Online (Sandbox Code Playgroud)


小智 6

我刚遇到同样的问题.我声明了一个变量,用@表示我的文本.

@{
   var twitterSite = "@MyTwitterSite";
}

...

<meta name="twitter:site" content="@twitterSite">
Run Code Online (Sandbox Code Playgroud)


小智 5

这对我有用

<meta name="author" content="Alan van Buuren @("@Alan_van_Buuren")">
Run Code Online (Sandbox Code Playgroud)

或者哟可以使用:

@@Alan_van_Buuren
Run Code Online (Sandbox Code Playgroud)