我必须将变量中的电子邮件传递给 JavaScript。像这样的事情:
<button onclick="Send(email)">Send</button>
显然,电子邮件变量中有“@”字符,我需要转义它,因为我收到此错误:“意外的 token 非法”
我读了这些帖子:Escape @ character in razor view engine 和 Escape @ character in razor view engine但他们都没有解决我的问题。我不知道我做错了什么。
这些帖子几乎包含了我尝试过的所有内容:
<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>
结果:something&64;something.com => 意外 token 非法
<button onclick="Send(@(email))">Send</button>
或
<button onclick="Send(@(@email))">Send</button>
结果:正如预期的something@something.com =>同样的错误
<button onclick="Send(@@email)">Send</button>
结果:关闭一个。 '@' 被转义,并且呈现 onclick="@email",但不幸的是不在变量 email 内。
我尝试了其他各种选项,但没有任何效果。
<text></text>
和 HttpUtility.Encode HttpUtility.JavascriptStringEncode HttpUtility.HtmlAttributeEncode Http.Raw 似乎也不起作用。
我很乐意提供任何建议。真的很想知道我在这里缺少什么。谢谢。
最佳答案
我认为你的问题不是 Razor 的问题,而是 JavaScript 的问题。看起来您需要在 @email
周围加上引号,因为它是一个字符串,而 JavaScript 会提示内容没有引号,因为它是非法的。
<button onclick="Send('@email')">Send</button>
关于javascript - Razor 中传递给 JavaScript 的变量内的转义 '@' 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27865192/