无法在 ViewComponent 中加载脚本

2024-03-24

我创建了一个ViewComponent其中显示一个Table需要一些插件来启用特定功能。在 - 的里面ViewComponent我尝试创建一个特定的部分:

@section DataTableScripts{
   <script src="~/js/JQuery/jquery.dataTables.js"></script>
} 

不幸的是我发现一个ViewComponent无法加载@section.

所以我尝试将脚本直接包含在ViewComponent,但问题是脚本是在之前加载的JQuery这是加载在_Layout, 具体来说:

视图组件

<script src="~/js/JQuery/jquery.dataTables.js"></script>
<script src="~/js/JQuery/dataTables.buttons.min.js"></script>
<script src="~/js/JQuery/dataTables.keyTable.min.js"></script>
<script src="~/js/JQuery/dataTables.responsive.min.js"></script>
<script src="~/js/JQuery/dataTables.select.min.js"></script>
<script src="~/js/JQuery/dataTables.bootstrap4.js"></script>
<script src="~/js/JQuery/jquery.dataTables.js"></script>

Layout

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

所以在这种情况下我会得到:

jQuery 未定义

我该如何应对这种情况?


只需设置Layout为你的 ViewComponent 。

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


@section DataTableScripts{
    <div>It works </div>
    <script src="~/js/JQuery/jquery.dataTables.js"></script>
} 

这是有效的屏幕截图:

[Edit]

这种方法似乎不是一个好方法。作为@柯克·拉金 https://stackoverflow.com/users/2630078/kirk-larkin说,这将使Layout渲染两次。另一个补丁是写一个新的RefinedLayout.cshtml并设置Layout of ViewComponent as the RefinedLayout :

@{
    Layout = "_RefinedLayout.cshtml";
}

@section DataTableScripts{
    <div>It works </div>
    <script src="~/js/JQuery/jquery.dataTables.js"></script>
} 

欲了解更多信息,请参阅MortenMeisler 的解决方法 https://github.com/aspnet/Mvc/issues/2910#issuecomment-356276338

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法在 ViewComponent 中加载脚本 的相关文章

随机推荐