我正在使用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 })';}" />
^
现在我收到一条错误消息,指出它无法找到我用)
指示的结束^
。我还需要逃避括号吗?现在还有其他错误吗?
答案 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