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

Razor Page中Bootstrap4 Gijgo日期选择器与Chrome默认控件冲突问题

解决Chrome中Gijgo日期选择器与ASP.NET Core asp-for属性冲突的问题

这个问题我之前也碰到过!核心原因是:当你用asp-for绑定DateTime类型的属性时,ASP.NET Core会自动把<input>的type属性设置为date。Chrome浏览器会优先渲染这个type="date"的原生日期选择器,直接覆盖了Gijgo的自定义控件,而Firefox对原生date控件的处理逻辑不同,所以没出现这个问题。

给你两个关键的解决步骤:

1. 强制指定input的type为text

手动给input加上type="text",阻止Chrome渲染原生日期选择器:

<div id="myDatePicker" class="form-group" style="display: none;">
    <label asp-for="Test.Date" class="control-label">Date</label>
    <!-- 新增type="text" -->
    <input asp-for="Test.Date" id="datepicker" type="text" width="276"/>
    <span asp-validation-for="Test.Date" class="text-danger"></span>
</div>

这样浏览器就会把它当成普通文本框,Gijgo的脚本就能正常接管渲染自定义选择器了。

2. 统一前后端的日期格式

注意到你后端实体用的是DataFormatString = "{0:MM/dd/yyyy}",但前端Gijgo设置的是format: 'dd/mm/yyyy',这里格式不匹配可能会导致表单提交时日期解析错误。建议把两者统一:

$('#datepicker').datepicker({
    uiLibrary: 'bootstrap4',
    format: 'MM/dd/yyyy', // 和后端DisplayFormat保持一致
    minDate: Date.now(),
    maxDate: function() {
        var date = new Date();
        date.setDate(date.getDate()+5);
        return new Date(date.getFullYear(), date.getMonth(), date.getDate());
    }
});

这样用户选择的日期格式和后端期望的一致,提交时就不会出现验证错误或者绑定失败的情况。

做完这两步,Chrome里的Gijgo日期选择器应该就能正常工作了,和Firefox的表现一致。

内容的提问来源于stack exchange,提问作者Hawke

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:12:28