630

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

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

如何转义“@”字符?

4

15 回答 15

1027

@@应该这样做。

于 2010-09-02T12:02:21.733 回答
173

Razor @ 转义字符到符号...

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

或者

<img src="..." alt="Find me on twitter as @("@")username" />
于 2013-01-29T13:19:12.500 回答
44

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

所以:

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

将会:

<meta name="twitter:site" content="@Html.Raw("@")twitterSite">
于 2016-03-25T20:46:02.020 回答
40

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

于 2011-07-14T20:13:46.137 回答
26

Instead of HTML entity I prefer the use of @Html.Raw("@").

于 2014-03-30T16:30:54.353 回答
12

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

然而,Razor 确实会尝试解决“@”只是一个“@”以及它标记 C#(或 VB.Net)代码的位置。这样做的主要用途之一是在 Razor 视图中识别电子邮件地址 - 不必对电子邮件地址中的 @ 字符进行转义。

于 2010-09-13T13:31:21.303 回答
8

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

@RazorCodePart1 @:@@ @RazorCodePart2

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

于 2011-10-07T18:37:49.380 回答
7

我只是有同样的问题。我声明了一个变量,将我的文本与@.

@{
   var twitterSite = "@MyTwitterSite";
}

...

<meta name="twitter:site" content="@twitterSite">
于 2015-03-22T15:30:23.070 回答
5

这对我有用

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

或者你可以使用:@@Alan_van_Buuren

:D

于 2016-01-22T05:20:14.263 回答
2

我知道这个问题很老,但我尝试了以上所有方法,但它并没有帮助我在 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
于 2020-03-03T18:06:07.647 回答
1

为此,您可以使用@@。喜欢var email = firstName + '\@@' + domain;

于 2016-11-24T08:36:54.180 回答
1

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

并将其添加到您的布局中 <span class="my-class"><a href="@myVariale" target="_blank" >link text</a></span>

于 2017-10-06T12:24:08.943 回答
1

我无法在占位符属性中使用其中的任何一个,因此我使用了 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

于 2018-01-27T10:56:42.170 回答
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 很酷。

于 2015-10-27T20:24:32.923 回答
0

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

例如:如果 test 分配了值,即 @ { var test = "ABC" },那么您可以通过设置获取值,因为 @test 任何地方都是 html 部分中的 cshtml 页面。否则,简单用作 @Html.DisplayName("test")

于 2018-06-25T09:53:08.803 回答