mvc 4底部的脚本 – 不在View页面中执行
在MVC4
,Views在页面底部包含script
元素。
例如。 在_layout.cshtml
(在“ Shared
文件夹”下)中, 标记位于最底部。 虽然我知道这会使页面加载速度更快,但问题实际上是这样的:
在我的Views
,有时我碰巧使用一些脚本,如autocomplete
,如下所示:
......
这是不起作用的,因为scripts
标记包含在页面的最末端。 (当时甚至没有加载JQuery)
痛苦地说,我不得不将Script Bundle rendering
移到页面顶部。 喜欢,
render jquery first then load scripts
所以,我错过了什么,或者我应该始终将我的scripts
标记保存在_layout.cshtml
页面的顶部?
谢谢你的回复。
好。 关键是:
将您的脚本anywhere
页面中的anywhere
,但将它们包含在@section Scripts
。
这将确保无论您将脚本放置在何处, _layout.cshtml' renders them with the
都会使用包含的_layout.cshtml' renders them with the
。
因为,在你的_layout.cshtml
你有这个:
@Scripts.Render("~/bundles/RequiredBundles") @RenderSection("scripts", required: false)
您可能希望在$ .ready中放置一些脚本,这些脚本仅在加载整个页面时运行。
我认为代码生成这样做的原因是,如果你将自己的脚本添加到包中,那么它们会在大部分html主体加载到dom之后执行。
如果你确保在编写自定义javascript时使用$ .ready,那么你应该没有问题,无论它们是在页面底部还是在head标签中。
为了个人喜好,我将它们放在顶部(我只需要查看head标签以查找加载的脚本)并确保使用$ .ready。