MVC3 Javascript无法在页面外工作

时间:2011-07-11 19:15:49

标签: javascript asp.net-mvc-3

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

我有一个页面上有更多的JS,所以我不想将它全部包含在全局文件中。问题是,javascript仅在页面上,底部,脚本标记中有效。如果我将JS放在自己的文件中并使用脚本src标记,无论是在页面上还是在_Layout中,JS都不会运行。它虽然出现在源头。

我甚至尝试过移动件。如果函数或处理程序从页面移动到它自己的文件,那么该部分就不起作用。不为所动的部分继续运行。

没有更改代码。如果我只是将它从页面中拉出来,将其放在自己的文件中,并链接到它,代码就不再有效了。两个寄存器函数都带有$(document).ready(function())。是不允许两个脚本执行此操作?我能想到的另一件事是身体页面(从_Layout的@RenderBody()渲染)无法链接到脚本。

2 个答案:

答案 0 :(得分:2)

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

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

现在位于此外部myscript.js内,取决于您是在<head>部分中引用它还是在结束</body>之前结束时,您应该使用$(document).ready

您可以做的是在scripts中定义_Layout.cshtml部分:

    ...
    <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 recommendations进行额外的HTTP连接)

答案 1 :(得分:0)

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