C# 显示旧错误消息的流畅验证

C# 显示旧错误消息的流畅验证,c#,asp.net-core,swagger,fluentvalidation,C#,Asp.net Core,Swagger,Fluentvalidation,我正在使用官方文档中描述的fluent验证,使用asp.net core 3.1和swagger。我的问题是错误消息的旧版本在当前消息之前被添加到列表中(它在大约100次提交之前被替换)。我试着重新命名这个类,创建一个新类,检查swagger配置,在另一台计算机上测试,我不知道为什么旧消息仍然存在 using FluentValidation; public class MyValidator : AbstractValidator<Report> { public MyV

我正在使用官方文档中描述的fluent验证,使用asp.net core 3.1和swagger。我的问题是错误消息的旧版本在当前消息之前被添加到列表中(它在大约100次提交之前被替换)。我试着重新命名这个类,创建一个新类,检查swagger配置,在另一台计算机上测试,我不知道为什么旧消息仍然存在

using FluentValidation;

public class MyValidator : AbstractValidator<Report> {

   public MyValidator() {

     RuleFor(report => report.FinalDate).NotNull().NotEmpty().When(report => report.Type.Equals("P")).WithMessage("A valid final date must be provided for this report");
   }
}
使用FluentValidation;
公共类MyValidator:AbstractValidator{
公共MyValidator(){
RuleFor(report=>report.FinalDate).NotNull().NotEmpty().When(report=>report.Type.Equals(“P”).WithMessage(“必须为此报告提供有效的最终日期”);
}
}

FinalDate是一个字符串。调用Validate()方法后,ValidationResult错误包含“FinalDate应该有效”和“必须为此报告提供有效的最终日期”。

您将向验证器输入什么
report.FinalDate==null
report.Type==“P”

如果是这种情况,您将得到2个错误,1个用于
.NotNull()
,1个用于
.NotEmpty().When(report=>report.Type.Equals(“p”).WithMessage(“必须为此报告提供有效的最终日期”)


除非您在别处设置了
ValidatorOptions.CascadeMode=CascadeMode.StopOnFirstFailure…
您可以共享git回购吗?我有一种感觉,错误来自于合并冲突或其他一些git错误。您能否在整个回购代码(不仅仅是解决方案,整个回购)中搜索字符串«FinalDate应该有效»,并查看它是否出现在其他地方。另外,您是否可以再次检查您的项目是否在正确的分支/回购上运行,以及您的分支是否没有任何可能导致此问题的暂存或未提交的内容。我肯定使用了正确的分支。可能问题与某种缓存有关?感谢您的回答,现在已经很清楚为什么会生成两条错误消息。但是您知道为什么.NotNull()返回一条旧错误消息吗?您是否覆盖了NotNull验证程序的默认错误消息?我没有足够的数据来回答这个问题。我能说的是,
.NotNull().NotEmpty().When(report=>report.Type.Equals(“P”).WithMessage(“必须为此报告提供有效的最终日期”)
只是为NotEmpty规则指定了一条自定义错误消息。NotNull规则使用默认值设置为的任何值(我假设是自定义的,因为实际默认值类似于
“Final Date”不能为空。
WithErrorMessage
仅适用于它所附加的规则。此规则的第一个版本是
.NotNull()。当(report=>report.Type.Equals(“P”)。WithMessage(“FinalDate应该有效”)
。然后,我将消息更改为“必须为此报告提供有效的最终日期”。在此之后,与我一起工作的一个人添加了
.NotEmpty()
。我将删除
.NotNull()
,但我只是好奇返回的消息,它肯定不是默认值(消息是葡萄牙语的)。