我有这样的剃刀语法:
foreach(var item in model)
{
<td><a href ="#" onclick="Getinfo(@item.email);" >6/16/2016 2:02:29 AM</a> </td>
}
收到请求的我的javascript是这样的:
<script type="text/javascript" src="~/Scripts/jquery-1.9.1.js"></script>
<script type="text/javascript">
function Getinfo(elem) {
var email = document.getElementById(elem).innerHTML;
}
</script>
单击href链接时,我在浏览器的控制台中收到以下错误:
“未捕获的SyntaxError:无效或意外的令牌”,
并且这部分有下划线:
**</a> </td>**
我是初学者,所以我在语法上遇到了很多困难。如果那是那么请帮助我。
答案 0 :(得分:42)
您应该在引号中传递@item.email
,然后将其视为字符串参数
<td><a href ="#" onclick="Getinfo('@item.email');" >6/16/2016 2:02:29 AM</a> </td>
否则,将其视为变量,从而生成错误。
答案 1 :(得分:3)
当您使用单行字符串(电子邮件)但如果使用
时,可接受的答案有效多行字符串,错误仍然存在。
请调查此事
<!-- start: definition-->
@{
dynamic item = new System.Dynamic.ExpandoObject();
item.MultiLineString = @"a multi-line
string";
item.SingleLineString = "a single-line string";
}
<!-- end: definition-->
<a href="#" onclick="Getinfo('@item.MultiLineString')">6/16/2016 2:02:29 AM</a>
<script>
function Getinfo(text) {
alert(text);
}
</script>
在Getinfo中将单引号(')更改为backtick(`),如下所示,错误将得到解决:
<a href="#" onclick="Getinfo(`@item.MultiLineString`)">6/16/2016 2:02:29 AM</a>
答案 2 :(得分:0)
在这种情况下,我也遇到了多行字符串的问题。 @Iman的backtick(`)解决方案在现代浏览器中效果很好,但在Internet Explorer中导致了无效的字符错误。我必须使用以下内容:
'@item.MultiLineString.Replace(Environment.NewLine, "<br />")'
然后,我不得不将回车符再次放入js函数中。必须使用RegEx处理多次回车。
// This will work for the following:
// "hello\nworld"
// "hello<br>world"
// "hello<br />world"
$("#MyTextArea").val(multiLineString.replace(/\n|<br\s*\/?>/gi, "\r"));