jQuery 渲染局部视图时未定义错误

jQuery is not defined error when rendering partial view

我有一个 _layout.cshmtl,其中包含以下内容(非常简单):

<head>
    <partial name="_Styles" />
</head>
<body>
    @RenderBody()
    <partial name="_Scripts" />
</body>

_scripts.cshtml 文件如下:

<script src="~/plugins/jquery/jquery.min.js"></script>
<script src="~/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>

然后我有一个使用 jsgrid 的局部视图,所以我有:

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

<link type="text/css" rel="stylesheet" href="~/plugins/jsgrid/jsgrid.min.css" />
<link type="text/css" rel="stylesheet" href="~/plugins/jsgrid/jsgrid-theme.min.css" />

<section>stuff here...</section>

<script src="~/plugins/jsgrid/jsgrid.min.js"></script>
<script type="text/javascript">
    jQuery(document).ready(function () { //code here... });
</script>

有了上面的内容,我得到了以下错误:

jsgrid.min.js:7 Uncaught ReferenceError: jQuery is not defined at jsgrid.min.js:7

MyView:104 Uncaught ReferenceError: jQuery is not defined at MyView:104

那么我如何才能准确确保父视图的脚本已加载 before/during 局部视图?

在使用JQuery方法或JSGrid plufin之前,我们应该添加JQuery引用。因此,JQuery 引用应该在 jsGrid 之前加载。

尝试修改您的代码如下(_layout.cshmtl中的代码,请检查文件路径,确保其正确):

<body>
    <partial name="_scripts.cshtml" />
    @RenderBody()
</body>

或使用以下代码:

<body>
    <script src="~/plugins/jquery/jquery.min.js"></script>
    <script src="~/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
    @RenderBody()
    <partial name="_scripts.cshtml" />
</body>