我知道这个问题已被多次提出过,但我找不到像我这样的类似案例。
我想在输入类型按钮控件上调用javascript函数我这样做:
<input type="button" onclick="FormatApplicationMessage(5, 'Please provide a copy of your CV')" class="fa fa-search fa-lg" />
但我总是遇到这个错误:
未捕获的SyntaxError:意外的标记ILLEGAL
这是生成的html:
<input type="button" onclick='FormatApplicationMessage(@application.StatusID, "@application.IssueMessage")' class="fa fa-search fa-lg" />
我试着这样做:
FormatApplicationMessage
但是我得到了同样的错误消息
任何黑客攻击?
修改
以下是function FormatApplicationMessage(statusID, issueMsg) {
//declined
if (statusID == 4) {
$('#ApplicationMessageLabel').val("Message");
}
//Update Required
else if (statusID == 5) {
$('#ApplicationMessageLabel').val("Message");
}
//Approved
else if (statusID == 6) {
$('#ApplicationMessageLabel').val("Message");
}
$('#ApplicationMessage').show();
}
实施:
{{1}}
答案 0 :(得分:1)
以下是我认为可能出错的地方:
FormatApplicationMessage
未定义为函数。使用两个参数定义此函数。并引用脚本或定义内联函数。@application
,其中包含您的媒体资源StatusID
和IssueMessage
@application
不属于@Model
或@ViewBag
。如果其中任何一个为真,请使用@Model.application.XYZ
或@ViewBag.application.XYZ
如果定义了all,并且您想在括号内使用@application
,请使用@(application.XYZ)
,否则解析器可能会出错,请尝试:
<input type="button" onclick='FormatApplicationMessage(@(application.StatusID), "@(application.IssueMessage)")' class="fa fa-search fa-lg" />
请参阅http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx/并查找显式表达
修改强>
如果@Infas
是C#类,并且您想在JavaScript中使用它,则必须在视图中内联创建脚本。您无法在纯.js文件中使用Razor @
- 语法。
答案 1 :(得分:0)
经过几天的调查,我终于发现了问题。问题非常愚蠢而且很烦人
呈现的HTML就像这样:
<i class="mywarning fa fa-warning (alias) fa-lg" onclick="FormatApplicationMessage(5,"Return Message
")"></i>
正如您所见,此部分")"></i>
会在下一行呈现,因为该字符串包含由于某些原因而无法合法执行此操作的结束语。
因此,要解决这个问题,我只需用&#39;&lt;&lt;&lt;&lt; br&gt;&#39; (当你为第二个参数调用FormatApplicationMessage
时,你可以用你喜欢的任何符号替换它。在FormatApplicationMessage
内,我恢复了那些&#39;&lt; br&gt;&#39;到&#34; \ n&#34;然后将其显示在文本区域中。
有用的线索: