ASP.NET Core项目Kendo Rating显示为文本框问题排查
Kendo Rating 渲染为普通文本框修复方案
以下是该问题的高频诱因及对应修复方式,按出现概率从高到低排序:
- 客户端资源加载错误/顺序错误
Kendo 控件渲染完全依赖前端JS、CSS资源,加载顺序错误、资源404都会直接导致初始化失败,退化为原生input。
正确的资源加载顺序如下,注意Kendo 2022.2.510要求jQuery版本≥3.5.1:<!-- 第一顺位加载jQuery --> <script src="~/lib/jquery/dist/jquery.min.js"></script> <!-- 第二顺位加载对应版本的Kendo核心JS --> <script src="~/lib/kendo/js/kendo.all.min.js"></script> <!-- 第三顺位加载Kendo ASP.NET Core适配JS --> <script src="~/lib/kendo/js/kendo.aspnetmvc.min.js"></script> <!-- 加载对应版本的Kendo基础样式 --> <link rel="stylesheet" href="~/lib/kendo/styles/kendo.default.min.css" />排查方式:打开浏览器F12开发者工具,切到「网络」面板刷新页面,看上述资源有没有404状态;再切到「控制台」面板,看有没有
$ is undefined、kendo is undefined之类的报错,有报错先解决资源加载问题。 - 缺失Kendo服务端标签注册
如果_ViewImports.cshtml没有注册Kendo的TagHelper/HtmlHelper,服务端写的Kendo标签不会被框架识别,会直接被解析为普通input输出。
打开对应项目的Views/_ViewImports.cshtml(MVC)或Pages/_ViewImports.cshtml(Razor Pages),确认存在以下配置:@addTagHelper *, Kendo.Mvc @using Kendo.Mvc.UI - 缺失初始化脚本输出
如果开启了Kendo控件的延迟初始化(Deferred()),必须在页面末尾</body>标签前调用脚本输出方法,否则所有Kendo控件的初始化逻辑都不会写入页面:
即使没开延迟初始化,如果页面在Kendo初始化逻辑执行前有其他JS报错,也会阻断后续控件渲染,控制台看到JS报错优先处理即可。@* 放在页面所有内容之后,body结束标签前 *@ @(Html.Kendo().DeferredScripts(false)) - 前后端版本不匹配
确认Nuget安装的Kendo.Mvc包版本和前端引用的JS/CSS资源版本完全一致,你当前使用的服务端版本是2022.2.510,前端资源必须对应相同版本,版本差会导致接口不匹配、初始化失败。
附可直接运行的最小Rating控件写法参考:
@(Html.Kendo().Rating() .Name("postRating") .Min(1) .Max(5) .Value(3) .Tooltip(t => t.Enabled(true)) )
内容的提问来源于stack exchange,提问作者barath thangam
相关产品推荐
相关产品推荐

