部署后Kendo Grid编辑行时Bootstrap日期选择器替换Kendo组件问题
问题:Kendo Grid部署后编辑行显示Bootstrap日期选择器而非Kendo组件
我在使用Kendo Grid时遇到一个问题:网格包含仅日期的可编辑列,通过编辑器模板在编辑行时显示Kendo DatePicker组件。本地运行正常,但部署到服务器后,编辑行时显示Bootstrap日期选择器而非Kendo组件。已将本地区域和文化设置为与服务器一致,本地仍正常显示Kendo组件,请问可能的原因是什么?
相关代码
网格列代码
c.Bound(b => b.ExpiryDate).Format((@System.Globalization.CultureInfo.CurrentCulture.Name == "lt-LT") ? "{0:yyyy-MM-dd}" : "{0:dd/MM/yyyy}").EditorTemplateName("DatePicker").Filterable(true).Width(150);
视图模型字段
[Display(Name = "ExpiryDate", ResourceType = typeof(Resource))] [DataType(DataType.Date)] public DateTime? ExpiryDate { get; set; }
编辑器模板(DatePicker.cshtml)
@using Kendo.Mvc.UI @model DateTime? @(Html.Kendo().DatePickerFor(m => m).Value(Model))
生成的HTML对比
服务器端(显示Bootstrap日期选择器)
<td role="gridcell" data-container-for="ExpiryDate"> <input class="text-box single-line" id="ExpiryDate" name="ExpiryDate" type="date" value="" data-bind="value:ExpiryDate"> <span class="field-validation-valid" data-valmsg-for="ExpiryDate" data-valmsg-replace="true"> </span> </td>
本地(正常显示Kendo组件)
<td role="gridcell" data-container-for="ExpiryDate"> <span class="k-widget k-datepicker" style=""> <span class="k-picker-wrap k-state-default"> <input id="ExpiryDate" name="ExpiryDate" type="text" value="" data-role="datepicker" class="k-input" role="combobox" aria-expanded="false" aria-owns="ExpiryDate_dateview" autocomplete="off" aria-disabled="false" data-bind="value:ExpiryDate" style="width: 100%;"> <span unselectable="on" class="k-select" aria-label="select" role="button" aria-controls="ExpiryDate_dateview"> <span class="k-icon k-i-calendar"> </span> </span> </span> </span> <script> kendo.syncReady(function(){jQuery("#ExpiryDate").kendoDatePicker({"format":"d"});}); </script> <span class="field-validation-valid" data-valmsg-for="ExpiryDate" data-valmsg-replace="true"> </span> </td>
可能的原因及解决方案
- 编辑器模板未正确部署:服务器上可能缺少
DatePicker.cshtml模板文件,或者路径错误。检查服务器Views/Shared/EditorTemplates(或对应区域的EditorTemplates文件夹)下是否存在该模板,确保文件内容与本地完全一致。 - Kendo UI资源加载失败:服务器环境中Kendo的JS/CSS资源未正确加载,导致组件无法初始化。通过浏览器开发者工具的Network标签检查资源是否有404错误,确认引用路径是否适配服务器环境。
- Kendo Mvc包版本不一致:本地与服务器使用的Kendo.Mvc NuGet包版本不同,引发兼容性问题。确保服务器项目的Kendo.Mvc版本和本地开发环境完全匹配。
- 默认模板优先级覆盖自定义模板:虽然指定了
EditorTemplateName,但服务器端可能因视图引擎查找规则、配置问题,回退到DataType.Date对应的默认HTML5 date输入(被Bootstrap样式化)。可以尝试移除[DataType(DataType.Date)]特性,或者确认模板名称大小写与服务器文件系统匹配(部分服务器区分大小写)。 - 视图编译异常:服务器端视图编译出错,导致模板未被正确渲染。查看服务器日志中的视图编译相关异常,尝试重新编译项目或启用视图预编译。
- Bootstrap脚本劫持日期输入:服务器环境中存在自定义脚本,自动将
type="date"的输入转换为Bootstrap日期选择器,而本地环境无此脚本。检查页面中的全局脚本,是否存在针对日期输入的强制转换逻辑。
内容的提问来源于stack exchange,提问作者Tamo
相关产品推荐
相关产品推荐

