在 Razor 视图引擎中如何转义 @ 字符

670

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

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

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


1
在C#中,您可以使用@标记关键字,将它们视为变量名而不是关键字。就我所知,似乎不可能以这种方式在Razor中使用保留关键字。 - Grimace of Despair
1
@GrimaceofDespair,仍然将关键字标记为变量的方法是将第二个@括在大括号中。我通过以下方式编写成功实现了这一点:@(@new) - strizzwald
16个回答

2
您可以使用@@来实现此目的。 例如:var email = firstName + '\@@' + domain;

1

1
我的需求是在元标签中添加@符号,这个方法很有效。但是@@在那里不起作用。 - Asiri Dissanayaka

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>

我创建了一个字符串变量,并将所有的正则表达式模式代码传递给它,然后在html中使用该变量,Razor处理得很好。

1

在CSHTML文件中添加一个变量

var myVariable = @"@";

并将它添加到您的布局中

<span class="my-class"><a href="@myVariale" target="_blank" >链接文本</a></span>

0

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

例如: 如果test被赋值为 即 @ { var test = "ABC" } 那么您可以通过在html部分的cshtml页面中设置@test来获取该值。 否则,只需使用@Html.DisplayName("test")


0

我认为在 Razor 视图中,@Html.Raw() 是最好的解决方案,适用于所有版本,并且对我总是有效。我已经添加了一个工作示例 CDN URL,以提供清晰的想法。

 @Html.Raw("<script src=\"https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.6/dist/umd/popper.min.js\"></script>")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接