如何使用 FluentValidation 验证我的日期时间?字段有好的格式吗?
How do I validate with FluentValidation that my Datetime? field has the good format?
我有一个类型为 Datetime?
的 属性,我想使用 FluentValidation 进行验证。
这是 属性 :
public DateTime? StartContractDate { get; set; }
这是我的实际验证器,他工作得很好,日期格式也很好:
RuleFor(x => x.StartContractDate).Cascade(CascadeMode.StopOnFirstFailure)
.NotNull().WithMessage(localizationService.GetLocaleStringResourceByName("Contract.Create.Create_Identification.Validate.StartContractDate").ResourceValue)
.Must(StartContractDateValidation).WithMessage(localizationService.GetLocaleStringResourceByName("Contract.Create.Create_Identification.Validate.StartContractDateValidation").ResourceValue);
我尝试了我在 link Validate DateTime with FluentValidator 中看到的内容但没有成功,我进入 BeAValidDate
函数但在导航器中我仍然有错误“值 'XXX' 对 'StartContractDate' 无效,而不是我在 WithMessage(...)
.
中输入的自定义消息
有什么建议吗?
我找到了我的问题的答案,所以如果它能帮助到别人,我会分享它。
错误 "The value 'XXX' is not valid for 'fieldName' is set before the FluentValidation and I didn't find a solution to handle it inside. So i searched where this message was setted and it was in a file named "MvcLocalization.resx”。还有另一个文件 "MvcLocalization.de.resx" 所以我尝试添加一个 "fr" 版本(这是我的 objective,更改并使该消息可翻译)。
所以解决方案是添加 "MvcLocalization.fr.resx" 文件,添加具有良好翻译的相同键,效果很好。
我有一个类型为 Datetime?
的 属性,我想使用 FluentValidation 进行验证。
这是 属性 :
public DateTime? StartContractDate { get; set; }
这是我的实际验证器,他工作得很好,日期格式也很好:
RuleFor(x => x.StartContractDate).Cascade(CascadeMode.StopOnFirstFailure)
.NotNull().WithMessage(localizationService.GetLocaleStringResourceByName("Contract.Create.Create_Identification.Validate.StartContractDate").ResourceValue)
.Must(StartContractDateValidation).WithMessage(localizationService.GetLocaleStringResourceByName("Contract.Create.Create_Identification.Validate.StartContractDateValidation").ResourceValue);
我尝试了我在 link Validate DateTime with FluentValidator 中看到的内容但没有成功,我进入 BeAValidDate
函数但在导航器中我仍然有错误“值 'XXX' 对 'StartContractDate' 无效,而不是我在 WithMessage(...)
.
有什么建议吗?
我找到了我的问题的答案,所以如果它能帮助到别人,我会分享它。
错误 "The value 'XXX' is not valid for 'fieldName' is set before the FluentValidation and I didn't find a solution to handle it inside. So i searched where this message was setted and it was in a file named "MvcLocalization.resx”。还有另一个文件 "MvcLocalization.de.resx" 所以我尝试添加一个 "fr" 版本(这是我的 objective,更改并使该消息可翻译)。
所以解决方案是添加 "MvcLocalization.fr.resx" 文件,添加具有良好翻译的相同键,效果很好。