我对Kendo UI真的很陌生,而且我遇到了一些问题。在我使用BundleConfiguration
解决了引用问题之后,显示了一个错误:
kendo.syncReady不是一个函数
这是我的观点:
<head>
@Styles.Render("~/Content/kendo.common.min.css")
@Styles.Render("~/Content/kendo.default.min.css")
@Scripts.Render("~/Scripts/jquery.min.js")
@Scripts.Render("~/Scripts/kendo.web.min.js")
@Scripts.Render("~/Scripts/kendo.aspnetmvc.min.js")
@Scripts.Render("~/Scripts/kendo.all.min.js")
@Scripts.Render("~/Scripts/modernizr-2.6.2.js")
</head>
<body>
@(Html.Kendo().DatePicker().Name("datepicker"))
</body>
这种情况发生在Chrome上。在IE上,它告诉我datepicker是未定义的。也许我错过了一个参考或什么?或者有人可以告诉我如何检查我的jQuery脚本的版本?我从Telerik Free Trial获得了所有这些。
kendo.syncReady
函数是在最近版本的KendoUI中添加的(约为v2017.1 223)。 Telerik开发人员在forum post中写道:
syncReady
方法被添加到kendo.aspnetmvc.js文件中,因为包含它的原因是jQuery 3.1的主要问题以及如何在MVC中生成模板。考虑到这一点,确保使用最新版本更新kendo.aspnetmvc.js文件应该使用缺少的函数解决错误。
导致此错误的主要条件有两个:
<body>
关闭一样)。ASP.NET MVC包装器为您生成Kendo JS代码,现在它们将该代码包装在kendo.syncReady
函数中,但是如果在MVC包装器将Kendo JS插入页面后包含Kendo的脚本标记,那么kendo.syncReady
函数将不会现在还存在,你会看到错误。
解决此问题的第一种方法是将您的Kendo <script>
标记移动到MVC包装器输出Kendo JS代码的位置。
<head>
<script src="https://kendo.cdn.telerik.com/2017.1.223/js/jquery.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2017.1.223/js/kendo.all.min.js"></script>
</head>
<body>
@(Html.Kendo().DatePicker().Name("datepicker"))
</body>
这不是理想的两个主要原因:这些脚本将呈现阻塞,而kendo.all.min.js
文件超过1MB!
您还可以推迟MVC包装器的脚本输出,如下所示:
@(Html.Kendo().DatePicker().Name("datepicker").Deferred(true))
这可以防止输出使用MVC包装器的JS代码并基本上存储渲染的JS,因此您可以将它放在页面上的任何位置:
<body>
@(Html.Kendo().DatePicker().Name("datepicker").Deferred(true))
<script src="https://kendo.cdn.telerik.com/2017.1.223/js/jquery.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2017.1.223/js/kendo.all.min.js"></script>
@Html.Kendo().DeferredScripts(true)
</body>
如果您继续看到kendo.syncReady is not a function
错误,请查看生成的HTML的来源,并确保在MVC包装器生成的代码之前真正输出Kendo脚本标记。还要确保使用正确版本的Kendo,并且您的JS文件和DLL文件之间的Kendo版本是相同的。
在阅读Telerik网站上的博客条目后,似乎修复是在引用kendo.all.js之后添加对kendo.aspnetmvc.js的引用。我在我的网站上使用版本2017.2.504尝试了这个并修复了问题。
通过在_Layout.cshtml
视图中添加引用来解决问题。
我将以下脚本添加到_layout.cshtml中:
<script type="text/javascript" asp-append-version="true" src="~/lib/kendo-ui/js/kendo.aspnetmvc.min.js"></script>