转义传递给javascript的变量中的Razor中的“@”字符

Escape '@' character in Razor inside variable passed to javascript

本文关键字:中的 字符 Razor 变量 javascript 转义      更新时间:2023-09-26

我必须将变量中的电子邮件传递给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("@", "&#64;"));
}
<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>