我有一个 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);
我尝试了我在该链接中看到的内容 Validate DateTime with FluentValidator没有成功,我进入了 BeAValidDate
函数,但在导航器中我仍然有错误“值 'XXX' 对 'StartContractDate' 无效,而不是我放入 中的自定义消息WithMessage(...)
.
如果您有什么建议?
最佳答案
我找到了我的问题的答案,所以如果它可以帮助别人,我会分享它。
错误“The value 'XXX' is not valid for 'fieldName' is not valid before FluentValidation is seted before FluentValidation and I didn't find a solution to handle it inside. 所以我搜索了设置此消息的位置,它在文件中名为“MvcLocalization.resx”。还有另一个文件“MvcLocalization.de.resx”,所以我尝试添加一个“fr”版本(我的目标是更改并使该消息可翻译)。
所以解决方案是添加“MvcLocalization.fr.resx”文件,添加具有良好翻译的相同键,效果非常好。
关于c# - 如何使用 FluentValidation 验证我的日期时间?字段有好的格式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49381881/