【问题标题】:Escape '@' character in Razor inside variable passed to javascript在传递给 JavaScript 的变量中的 Razor 中转义“@”字符
【发布时间】:2015-01-09 16:42:28
【问题描述】:

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

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

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

我读过这些帖子: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 => 意外令牌非法

<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 似乎也不起作用。

我会很高兴得到任何建议。真的很想知道我在这里缺少什么。谢谢你。

【问题讨论】:

    标签: javascript c# html razor escaping


    【解决方案1】:

    我认为您的问题不是 Razor 而是 JavaScript。看起来您需要在 @email 周围加上引号,因为它是一个字符串,而 JavaScript 会抱怨没有该内容的内容,因为它是非法的。

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

    【讨论】:

    • 非常好。我知道这将是一件如此简单的事情。我没有意识到你在这里需要这些''。非常感谢你。成功了!
    猜你喜欢
    • 2015-10-30
    • 2018-12-14
    • 1970-01-01
    • 2010-09-15
    • 2013-11-07
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多