You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署后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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 20:46:33