ABP Commercial DateTime Picker编辑模式下datetime-local无法填充时间问题
根本原因
HTML原生datetime-local输入控件对赋值格式有严格的规范要求,必须使用yyyy-MM-ddTHH:mm格式:
- 日期与时间部分必须用大写字母
T分隔,不能使用空格 - 时间部分为24小时制,不允许携带
AM/PM上下午标识
你之前尝试的yyyy-MM-dd hh:mm tt等格式不符合原生控件的格式要求,所以无法完成自动填充。
修复方案
编辑页代码修改
调整编辑页Razor代码中value字段的日期格式为规范格式即可,修改后代码如下:
<abp-input asp-for="TaxCodeEffectiveLife.StartDateTime" value="@(Model.TaxCodeEffectiveLife.StartDateTime?.ToString("yyyy-MM-ddTHH:mm"))" type="datetime-local" />
创建页可选适配
如果创建页需要设置默认日期时间初始值,也可以使用相同格式赋值:
<abp-input asp-for="TaxCodeEffectiveLife.StartDateTime" value="@DateTime.Now.ToString("yyyy-MM-ddTHH:mm")" type="datetime-local" />
jQuery动态赋值适配
如需通过jQuery给控件动态赋值,同样要严格遵循上述格式要求,示例如下:
// 有效写法 $('#TaxCodeEffectiveLife_StartDateTime').val('2024-06-15T09:45'); // 无效写法示例 // $('#TaxCodeEffectiveLife_StartDateTime').val('2024-06-15 09:45 AM');
补充说明
- 如果你的日期字段为带时区的
DateTimeOffset类型,需要先转换为对应展示时区的本地时间再做格式化,避免出现时间偏差 - ABP框架的
abp-input标签助手不会自动处理datetime-local类型的value格式,需要手动指定符合规范的输出格式
内容的提问来源于stack exchange,提问作者abhannan
相关产品推荐
相关产品推荐

