未捕获的SyntaxError:意外的令牌ILLEGAL onclick mvc

时间:2015-08-30 14:00:35

标签: javascript asp.net-mvc asp.net-mvc-4

我知道这个问题已被多次提出过,但我找不到像我这样的类似案例。

我想在输入类型按钮控件上调用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}}

2 个答案:

答案 0 :(得分:1)

以下是我认为可能出错的地方:

  1. FormatApplicationMessage未定义为函数。使用两个参数定义此函数。并引用脚本或定义内联函数。
  2. 请确保您可以在视图中访问@application,其中包含您的媒体资源StatusIDIssueMessage
  3. 确保@application不属于@Model@ViewBag。如果其中任何一个为真,请使用@Model.application.XYZ@ViewBag.application.XYZ
  4. 如果定义了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,&quot;Return Message 
&quot;)"></i>

正如您所见,此部分&quot;)"></i>会在下一行呈现,因为该字符串包含由于某些原因而无法合法执行此操作的结束语。

因此,要解决这个问题,我只需用&#39;&lt;&lt;&lt;&lt; br&gt;&#39; (当你为第二个参数调用FormatApplicationMessage时,你可以用你喜欢的任何符号替换它。在FormatApplicationMessage内,我恢复了那些&#39;&lt; br&gt;&#39;到&#34; \ n&#34;然后将其显示在文本区域中。

有用的线索:

1

2

3

4