asp.net MVC 3 - MVC3 Javascript 无法在页面外工作



这不是一个真正的关键问题,我只是不明白为什么它不起作用。我正在将mvc3用于web应用程序,并且我有一个global.js脚本,该脚本包含在_Layout标头中。它运行得很好。

我有一个单独的页面,上面有更多的JS,所以我不想把它全部包含在全局文件中。问题是,javascript只有在页面底部的脚本标记中才有效。如果我把JS放在它自己的文件中,并在页面上或_Layout中使用脚本src标记,那么JS就不会运行。它显示在来源。

我甚至试过移动棋子。如果一个函数或处理程序从页面移动到它自己的文件中,那么该部分就无法工作。未移动的部分继续运行。

代码没有更改。如果我只是把它从页面上取下来,放在它自己的文件中,然后链接到它,代码就不再工作了。两者都使用$(document(.ready(function(((注册函数。两个脚本不允许这样做吗?我唯一能想到的是,正文页(从_Layout的@RenderBody((渲染(无法链接到脚本。

您是如何引用那些外部js文件的?您应该使用URL帮助程序来确保它们的正确路径:

<script src="@Url.Content("~/Scripts/myscript.js")" type="text/javascript"></script>

现在,在这个外部myscript.js中,根据您是在<head>部分还是在结束</body>之前的末尾引用它,您是否应该使用$(document).ready

您可以在_Layout.cshtml:中定义一个scripts部分

    ...
    <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>        
    @RenderSection("scripts", false)
</body>

每个视图都可以使用它来包含其特定的脚本:

@section scripts {
    <script src="@Url.Content("~/Scripts/myscript.js")" type="text/javascript"></script>
}

最后,在myscript.js中,您可以直接操作DOM,而无需在document.ready:中进行包装

$('form').submit(function() {
    alert('submitting a form');
});

您可以包含任意多的外部脚本(尽管您应该根据YSlow的建议将它们的数量严格减少到最低限度,以避免额外的HTTP连接(

我只是假设您的javascript中存在拼写错误。尝试用Firebug或Chrome加载页面,并查看错误日志;

最新更新