我创建了一个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(使用前将#替换为@)