逃离' @' Razor里面的变量字符传递给javascript

时间:2015-01-09 16:42:28

标签: javascript c# html razor escaping

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

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

显然有&#39; @&#39;电子邮件变量中的字符,我需要转义,因为我收到此错误:&#34;意外的令牌ILLEGAL&#34;

我看了这些帖子:Escape @ character in razor view engineEscape @ character in razor view engine,但没有一个能解决我的问题。我不知道,我做错了什么。

几乎所有我尝试过这些帖子的内容都是:

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

结果:正如预期的那样something@something.com =&gt;同样的错误

{ 
 var str = email.Replace("@", ("@@"));
}
<button onclick="Send(@email)">Send</button>

结果:@@ something.com =&gt;同样的错误

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

结果:服务器错误:&#34;:&#34;在代码块的开头无效

{ 
 var str = email.Replace("@", "&#64;"));
}
<button onclick="Send(@email)">Send</button>

结果:某事&amp; 64; something.com =&gt;意外的令牌ILLEGAL

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

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

结果:正如预期的那样something@something.com =&gt;同样的错误

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

结果:关闭一个。 &#39; @&#39;被转义,这是渲染onclick =&#34; @ email&#34;,但遗憾的是不在变量电子邮件中。

我尝试了其他各种选项,但没有任何效果。

<text></text>

和HttpUtility.Encode HttpUtility.JavascriptStringEncode HttpUtility.HtmlAttributeEncode Http.Raw似乎也不起作用。

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

1 个答案:

答案 0 :(得分:4)

我认为你的问题不是Razor而是JavaScript。看起来你需要@email左右的引号,因为它是一个字符串,而JavaScript正在抱怨没有它的内容,因为它是非法的。

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