转义传递给javascript的变量中的Razor中的“@”字符
本文关键字:中的 字符 Razor 变量 javascript 转义 | 更新日期: 2023-09-27 18:36:51
我必须将变量中的电子邮件传递给javascript。像这样:
<button onclick="Send(email)">Send</button>
显然,电子邮件变量中有"@"字符,我需要转义,因为我收到此错误:"意外令牌非法"
我读了这些帖子: 剃刀视图引擎中的转义@字符和剃刀视图引擎中的转义@字符,但它们都没有解决我的问题。我不知道,我做错了什么。
我用这些帖子尝试的几乎所有内容:
<button onclick="Send(@email)">Send</button>
结果:如预期的那样 something@something.com =>相同的错误
{
var str = email.Replace("@", ("@@"));
}
<button onclick="Send(@email)">Send</button>
结果:something@@something.com =>相同的错误
<button onclick="Send(@:@email)">Send</button>
结果:服务器错误:":"在代码块开始时无效
{
var str = email.Replace("@", "@"));
}
<button onclick="Send(@email)">Send</button>
结果:某物&64;某物.com => 意外令牌非法
<button onclick="Send(@(email))">Send</button>
或
<button onclick="Send(@(@email))">Send</button>
结果:如预期的那样 something@something.com =>相同的错误
<button onclick="Send(@@email)">Send</button>
结果:关闭一个。"@"被转义,这是渲染onclick="@email",但不幸的是不在变量电子邮件中。
我尝试了其他各种选择,但没有任何效果。
<text></text>
和 HttpUtility.Encode HttpUtility.JavascriptStringEncode HttpUtility.HtmlAttributeEncode Http.Raw 似乎也不起作用。
我将很高兴得到任何建议。真的很想知道我在这里错过了什么。谢谢。
我认为
你的问题不是Razor的问题,而是JavaScript的问题。看起来你需要在@email
周围引号,因为它是一个字符串,而 JavaScript 在没有引号的情况下抱怨内容,因为它是非法的。
<button onclick="Send('@email')">Send</button>