mvc 4底部的脚本 - 不在View页面</scripts>中执行<scripts>

时间:2013-10-09 10:09:44

标签: c# javascript jquery asp.net-mvc-4 .net-4.5

MVC4中,视图的页面底部包含script元素。

EG。在_layout.cshtmlShared文件夹下),<script>标记位于最底部。虽然我知道这会使页面加载速度更快,但问题实际上是这样的:

在我的Views中,有时我碰巧会使用像autocomplete这样的脚本,如下所示:

<script type="text\javascript"> ...... </script>

不起作用,因为scripts标记包含在页面的最后。 (当时甚至没有加载JQuery)

痛苦地说,我不得不将Script Bundle rendering移到页面顶部。像,

render jquery first
then load scripts

所以,我错过了什么或者我应该始终将scripts标记放在_layout.cshtml页面的顶部吗?

感谢您的回复。

3 个答案:

答案 0 :(得分:4)

确定。关键是:

将您的脚本anywhere放入您的网页,但将其封在@section Scripts内。

这将确保无论您放置脚本的哪个位置,都包含_layout.cshtml' renders them with the JQuery`。

因为,在你的_layout.cshtml中有这个:

@Scripts.Render("~/bundles/RequiredBundles")
        @RenderSection("scripts", required: false) 

答案 1 :(得分:0)

您可能希望在$ .ready中放入一些脚本,这些脚本只会在整个页面加载时运行。

答案 2 :(得分:0)

我认为代码生成的原因是这样的,如果你将自己的脚本添加到包中,那么它们会在大部分html主体加载到dom之后执行。

如果你确保在编写自定义javascript时使用$ .ready,那么你应该没有问题,无论它们是在页面底部还是在head标签中。

出于个人喜好,我将它们放在顶部(我只需要查看head标签以查找加载的脚本)并确保使用$ .ready。