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

问题描述 投票:0回答:16

我正在使用 Razor 作为视图引擎创建一个示例 ASP.NET MVC 3 站点。 razor 语法以

@
字符开头,例如
@RenderBody()
。如果我在 cshtml 页面上写 @test ,它会给我解析错误

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

如何转义“@”字符?

asp.net asp.net-mvc razor escaping
16个回答
1094
投票

@@
应该这样做。


192
投票

Razor @ 将字符转义为符号...

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

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

50
投票
在我看来,

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

因此:

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

将是:

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

43
投票

使用

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


30
投票

我更喜欢使用

@Html.Raw("@")
,而不是 HTML 实体。


13
投票

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

然而,Razor 确实尝试找出“@”何时只是“@”以及它在何处标记 C#(或 VB.Net)代码。其主要用途之一是在 Razor 视图中识别电子邮件地址 - 无需转义电子邮件地址中的 @ 字符。


9
投票
关于

@RazorCodePart1 @@ @RazorCodePart2

的问题,你需要顺序:

@RazorCodePart1 @:@@ @RazorCodePart2

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


8
投票
我也遇到了同样的问题。我声明了一个变量,将我的文本与 @ 一起放置。

@{ var twitterSite = "@MyTwitterSite"; } ... <meta name="twitter:site" content="@twitterSite">
    

8
投票
我知道这个问题已经很老了,但是我尝试了上述所有方法,但它并没有帮助我在 URL 内转义 ASP.NET 框架(MVC 5)中的字符“@”。不过,根据 Terje Solem 的回答,UTF-8 代码

%40

对我有用。这是我试图访问的原始 URL:

https://unpkg.com/@google/[email protected]/dist/markerclustererplus.min.js


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

https://unpkg.com/%40google/[email protected]/dist/markerclustererplus.min.js
    

5
投票
这对我有用

<meta name="author" content="Alan van Buuren @("@Alan_van_Buuren")">
或者哟可以使用:

@@Alan_van_Buuren
    

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 对此很满意。


1
投票
您可以使用@@来达到此目的。 喜欢

var email = firstName + '\@@' + domain;


    


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


1
投票
只需在 CSHTML 文件中添加一个变量

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

<span class="my-class"><a href="@myVariale" target="_blank" >link text</a></span>
    

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

例如: 如果测试被分配了值 即@ { var test = "ABC" } 然后你可以通过设置为 @test 来获取值,任何地方都是 html 部分的 cshtml 页面。 否则,简单地使用 @Html.DisplayName("test")


-1
投票
我认为在 Razor 视图中

@Html.Raw()

 是所有版本的最佳解决方案,并且始终适合我。我添加了一个工作示例 cdn URL 以提供清晰的想法。

@Html.Raw("<script src=\"https://cdn.jsdelivr.net/npm/@popperjs/[email protected]/dist/umd/popper.min.js\"></script>")
    
© www.soinside.com 2019 - 2024. All rights reserved.