Kendo UI的kendo.all.min.js放在_Layout时Grid组件失效求助
问题根因
你遇到的故障是jQuery重复加载导致Kendo组件扩展方法被覆盖:
查看你的_Layout.cshtml头部的脚本加载顺序:
- 第一步加载Kendo CDN的
jquery.min.js - 第二步加载
kendo.all.min.js,此时Kendo会将所有组件方法(包括kendoGrid)挂载到当前已经加载的jQuery实例上 - 第三步又加载了本地的
~/lib/jquery/dist/jquery.js,新加载的jQuery会覆盖全局的$对象,之前挂载到旧jQuery实例上的Kendo方法全部丢失,所以调用kendoGrid时会报错无法执行。
解决方案
按如下步骤修改即可:
- 删除重复的jQuery引用:删掉_Layout.cshtml头部的如下代码,保证全局只加载一次jQuery:
<script src="~/lib/jquery/dist/jquery.js"></script>
如果你项目需要优先使用本地jQuery,可调整顺序为:先引本地jQuery,再引kendo.all.min.js,同时删掉Kendo CDN的jQuery引用,始终保证jQuery加载顺序在kendo.all.min.js之前。
2. (可选规范优化)将View页面中的Grid初始化脚本放到Scripts段落中,保证依赖脚本加载完成后再执行:
在View页面中修改脚本部分为:
@section Scripts { <script type="text/javascript"> var data = [{ firstName: "Mauricio", lastName: "Silva", email: "mauricio@email.com" }, { firstName: "Daniel", lastName: "Silva", email: "daniel@email.com" }, { firstName: "Janaina", lastName: "Silva", email: "janaina@email.com" }]; $("#grid").kendoGrid( { dataSource: data } ); </script> }
- 清理浏览器缓存后重新测试即可恢复Grid正常加载。
内容的提问来源于stack exchange,提问作者Garota de Programas
相关产品推荐
相关产品推荐

