我是否必须在页面顶部加载javascript文件?

时间:2017-09-19 11:16:36

标签: javascript jquery asp.net-mvc

不确定这篇文章是否属于这里,请告诉我是否应该移动它。

我知道我们应该始终在页面底部调用js个文件。

但是,我需要在我的一个视图中调用一个函数,其中该函数在单独的js文件中定义,而该文件又依赖于jquery

很自然地,当我在视图中调用它时,jquery或函数都没有被声明。

_Layout.cshtml

@using Microsoft.AspNet.Identity
@using AuroraWeb.Resources
<!DOCTYPE html>

<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@Resources.ResourceManager.GetString("Title")</title>

    @Styles.Render("~/Content/css")
</head>
<body>
    @Html.Partial("_Navbar")

    <div class="container-fluid body-content">
        @RenderBody()

        @Html.Partial("_Footer")
    </div>

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/modernizr")
    @Scripts.Render("~/bundles/bootstrap")
    @Scripts.Render("~/bundles/jqueryval")
    @Scripts.Render("~/bundles/myscripts")    

    @RenderSection("scripts", required: false)

    @* google maps *@
    <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=MYKEY&callback=initMap&language=@UICulture"></script>
</body>
</html>

在这里,您可以看到我的脚本包都是在RenderBody()之后调用的,这是我的视图出现的位置:

MyView.cshtml

<script>
    selectableGrid('@Url.Action("Details", "Lead")/');
</script>

selectableGrid中呈现的其中一个脚本中定义_Layout的位置。显然这会抛出

  

ReferenceError:未定义selectableGrid

这里的正确方法是什么?我只需要将所有的javascript引用放在布局页面的顶部吗?

1 个答案:

答案 0 :(得分:1)

为了在java -jar benchmarks.jar -lrf Available formats: text, csv, scsv, json, latex 定义的占位符中呈现视图中的脚本,您需要将其添加到@RenderSection("scripts", required: false)内(请注意,这可以放在任何位置,但通常位于视图的底部)

@section scripts {

MyView.cshtml