首页 > 解决方案 > RenderSection - 脚本未在 ASP.Net Core 中的依赖视图上正确加载

问题描述

我有一个_Layout.cshtml具有此最小化设置的文件:

布局.cshtml

<!DOCTYPE html>
<html lang="en">

    <head>
        <!-- stuff -->
    </head>

    <body>
        @RenderBody()
    </body>

    <script src="~/jqueryui/jquery-ui.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/timepicker/1.3.5/jquery.timepicker.min.js"></script>

    @RenderSection("Scripts", required: false)

</body>
</html>

然后,我创建了一个视图,其中包含使用上述参考文献中的timepickeranddatepicker的脚本,这些脚本可以jquery正常加载和工作:

主视图.cshtml

<div>
   <!-- some stuff -->
</div>

section scripts {
    <script>

        // Some page-specific JavaScript functions
        function chkClickHandle() {
            alert('foobar');
        }

        // The date/time picker jquery functions
        $(function () {
            $(".datepicker").datepicker({
               dateFormat: "yy-mm-dd"
            });
        });

        $(function () {
            $(".timepicker").timepicker();
        });

    </script>
}

但后来我创建了一个导航栏:

导航栏.cshtml

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<nav><!-- stuff --></nav>

<div class="p-2 p-sm-3">
    @RenderBody()
</div>

@RenderSection("Scripts", required: false)

并在我的顶部添加了对它的引用MainView.cshtml

@{
    Layout = "~/Views/Shared/_NavBar.cshtml";
}

现在我的脚本不起作用。

它们呈现,但在页面中间而不是在页面底部。我的意思是,这就是他们弹出的地方,因为我@RenderSection("Scripts", required: false) 在视图的底部有NavBar,但是如果我省略了那一点,我会收到一个错误:

以下部分已定义但尚未由页面在“/Views/Shared/_NavBar.cshtml”处呈现:“脚本”

那么如何在我的 MainView 上获取我需要的那些脚本,以便在其他所有内容都加载后,以像这样的嵌套视图呈现在页面底部?

我猜这是使用的全部意义,RenderSection但在这个嵌套继承设置中我一定是错误地使用了它。

我可能需要页面顶部的 jQuery 引用吗?

我正在使用 ASP.Net Core 3.1

标签: c#asp.net-mvcasp.net-core

解决方案


推荐阅读