javascript - Razor 中传递给 JavaScript 的变量内的转义 '@' 字符

标签 javascript c# html razor escaping

我必须将变量中的电子邮件传递给 JavaScript。像这样的事情:

<button onclick="Send(email)">Send</button>

显然,电子邮件变量中有“@”字符,我需要转义它,因为我收到此错误:“意外的 token 非法”

我读了这些帖子:Escape @ character in razor view engineEscape @ 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("@", "&#64;"));
}
<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/

相关文章:

javascript - Jquery 在模块中返回 prevObject

javascript - 无法更改用于播放音频的变量

HTML 字体大小在嵌入式浏览器 (MFC) 中发生不可预测的变化

javascript - jQuery 日期选择器字段值不显示

html - 如何居中位置 :fixed element - HTML CSS

javascript - 我们如何在 Redux 异步操作中模拟获取?

javascript - 在 html 中创建和链接 div 标签

c# - C# 中 PKCS11Interop 库的线程安全使用

c# - WCF 服务、Azure SQL 数据库和 ContentType/Binding 错误

c# - string.Compare ("KHA","KTB",true) 在 C# 中返回不正确的结果