ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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

如何转义“@”字符?

在 C# 中,您可以使用 @ 标记关键字,以将它们视为变量名而不是关键字。据我所知,以这种方式在 Razor 中使用保留关键字似乎是不可能的。
@GrimaceofDespair 仍将关键字标记为变量的方法是将第二个 @ 括在大括号中。我设法通过这样写来使它工作:@(@new)

T
Tim Cooper

@@ 应该这样做。


这在这种情况下似乎不起作用:@RazorCodePart1 @@ @RazorCodePart2 例如,两个 Razor 代码片段之间的文字 @。
最好的解决方案是使用 HTML 编码的字符串作为 @-character: @
我的剃须刀页面中有一个 <style> 标记,它必须嵌入一个“@media {}”指令,因此不能选择 html 编码;只有@@ 有效。
@WoIIe 不在 URL 中。
在 href 中使用 @("@")
E
Emre Karahan

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

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

或者

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

这种方法似乎是最好的,因为它也适用于@media css 东西,而 HTML 实体方式可能不会。
好的!非常感谢 :)
你搞定了,谢谢:)
工作得很好。谢谢。
太好了,我发现这段代码更容易让大家理解
R
Rosue Don-Chip Walford

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

所以:

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

将会:

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

以及如何在包含多个段落的大文本上使用它?我尝试使用 ` 而不是 " 但结果值得怀疑。空白行没有错误,但 ` 字符有错误。
K
Kasper Skov

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


奇怪的是(在符号冒号)@: 字符序列语法对我不起作用,因为我尝试将我的 ASP.NET MVC 3 项目升级到 MVC4。我得到的例外是:“”:“在代码块的开头无效。只有标识符、关键字、注释、“(”和“{”是有效的。”
@Michael这很奇怪。他们必须在版本 4 中删除它。
嗨 Kasper Skov,我发现 @: 问题实际上与 @: 根本无关。它与在 @if() {} 块中不必要地使用 @Model 有关。解决方法是删除模型上的 at 符号。当我已经在服务器范围内时,我需要避免使用 @ 。 stackoverflow.com/questions/12809855/…
M
Mamun

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


A
Alfamale

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

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


我还没有找到 Razor/VB.net 和使用 Prismjs 的方法。我为 Edit
D
DragonDTG

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

@RazorCodePart1 @:@@ @RazorCodePart2

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


w
watfy

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

@{
   var twitterSite = "@MyTwitterSite";
}

...

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

这是唯一对我有用并且对 Open Graph 调试器有效的方法。
A
Alan

这对我有用

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

或者你可以使用:@@Alan_van_Buuren

:D


H
Hector Soto

我知道这个问题很老,但我尝试了以上所有方法,但它并没有帮助我在 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

S
Sender

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

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


A
Abdus Salam Azad

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


S
Speedyjet

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

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


P
Pavithra

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

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