在razor视图引擎中转义@字符

时光怂恿深爱的人放手 提交于 2020-01-13 00:21:10

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

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

如何转义“ @”字符?


#1楼

剃刀@将转义符转义为char ...

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

要么

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

#2楼

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


#3楼

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

@{
   var twitterSite = "@MyTwitterSite";
}

...

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

#4楼

我尝试了以上所有选项,但没有一个起作用。 这就是我所做的工作:

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


#5楼

这项工作对我来说

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

或者可以使用:@@ Alan_van_Buuren

:D


#6楼

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

因此:

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

将会:

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

#7楼

@@应该这样做。


#8楼

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

但是,Razor会尝试找出“ @”只是一个“ @”以及在其上标记C#(或VB.Net)代码的位置。 这样做的主要用途之一是在Razor视图中标识电子邮件地址-不必在电子邮件地址中转义@字符。


#9楼

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


#10楼

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

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


#11楼

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


#12楼

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

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


#13楼

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


#14楼

对于有关@RazorCodePart1 @@ @RazorCodePart2 ,您需要执行以下操作:

@RazorCodePart1 @:@@ @RazorCodePart2

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!