内联JS在外部函数工作时显示语法错误

时间:2015-07-06 15:04:14

标签: javascript asp.net-mvc razor syntax-error

我正在使用MVC并使用一些JavaScript和Razor代码在我的View中工作。

当我使用下面的代码时,我得到一个语法错误"未终止的字符串常量"我的代码不起作用:

<input type="button" value="Continue Button" onclick=" if (confirm('Continue?')) {window.location.href = '@Url.Action("actionName", "controllerName", new { param = 123 })        ';}" />     

但是,如果我将JavaScript if语句移动到外部函数,我不会收到任何错误,我的代码也可以运行:

<script>
  function confirmContinue() {
        if (confirm('Continue?')) {
            window.location.href = '@Url.Action("actionName", "controllerName", new { param = 123 })';
        }
    };
</script>

<input type="button" value="Continue Button" onclick="confirmContinue()" />  

为什么内联if语句在单独函数中的相同代码有效时会显示错误?我的报价是否以某种方式相互干扰?如何更改某些语法以使内联JS代码起作用?

更新

按照下面的Mathletics建议,我将引号转义并将代码更改为:

<input type="button" value="Continue Button" onclick=" if (confirm('Continue?')) {window.location.href
= '@Url.Action(\"actionName\", \"controllerName\", new { param = 123 })';}" />
                                                                      ^

现在我收到一条错误消息,指出它无法找到我用)指示的结束^。我还需要逃避括号吗?现在还有其他错误吗?

1 个答案:

答案 0 :(得分:2)

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/|#(.*))$
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

RewriteRule ^p/(.+)$ index.php?p=$1 [QSA,L]

RewriteRule ^(.+)$ index.php?s=$1 [QSA,L]

我已使用<input type="button" value="Continue Button" onclick=" if (confirm('Continue?')) {window.location.href = '@Url.Action("actionName", "controllerName", new { param = 123 }) ';}" /> ^ ^ 标记了匹配的引号。您需要在^值内转义引号。另一方面,不使用内联JavaScript

修正:

onclick