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

ASP.NET Core中data-val-date日期验证失效问题求助

解决日期格式自定义提示不生效的问题

1. 修正HTML属性命名错误

你输入框里把data-val-date写成了data_val_date(下划线替代连字符),ASP.NET非侵入式验证仅识别data-val-*格式的属性,这是导致提示不生效的直接原因。修改后的输入框代码:

<input id="datDebt" type="text" class="form-control datepicker valid" data-val="true" 
       data-val-required="BD-Le champ Du est obligatoire." 
       data-val-date="BD-Le format du champ Du doit être AAAA-MM-JJ." 
       name="Client.DatDebutClint" value="" aria-autocomplete="none" 
       placeholder="AAAA-MM-JJ" style="min-width: 7em;" maxlength="10" 
       aria-describedby="datDebt-error" aria-invalid="false">

2. 完善模型验证配置

仅添加[DataType(DataType.DateTime)]不足以确保客户端验证的格式规则生效,建议补充[DisplayFormat]属性明确日期格式,并开启编辑模式下的格式应用:

[DisplayName("Du")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime? DatDebutClint { get; set; } = null;

若需要强制验证格式,还可添加[RegularExpression]属性:

[RegularExpression(@"^\d{4}-\d{2}-\d{2}$", ErrorMessage = "BD-Le format du champ Du doit être AAAA-MM-JJ.")]

3. 确保客户端验证脚本完整

除jquery.validation.js外,必须引入jquery.validate.unobtrusive.js——ASP.NET的非侵入式验证依赖该脚本将data-val-*属性转换为jQuery Validation的验证规则。

4. 适配自定义日期格式验证(可选)

jQuery Validation默认的date验证规则依赖浏览器日期解析逻辑,可能无法严格匹配AAAA-MM-JJ格式。若要强制验证格式,可添加自定义验证方法:

// 自定义日期格式验证方法
$.validator.addMethod("frenchdate", function(value, element) {
    return this.optional(element) || /^\d{4}-\d{2}-\d{2}$/.test(value);
}, "BD-Le format du champ Du doit être AAAA-MM-JJ.");

// 映射到非侵入式验证属性
$.validator.unobtrusive.adapters.addSingleVal("frenchdate");

之后修改输入框的验证属性为data-val-frenchdate="true"即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:32:46