C# Fluent验证输出当前记录信息
好的,我正在对我的一个类使用Fluent验证,我想知道的是。如何确定哪些记录有故障,例如说: 正在被分类为客户可以参考的编号。我如何使用Fluent Validation更改下面的字符串,以将其正在处理的文档编号的当前记录输出给客户C# Fluent验证输出当前记录信息,c#,fluentvalidation,C#,Fluentvalidation,好的,我正在对我的一个类使用Fluent验证,我想知道的是。如何确定哪些记录有故障,例如说: 正在被分类为客户可以参考的编号。我如何使用Fluent Validation更改下面的字符串,以将其正在处理的文档编号的当前记录输出给客户 public string DocumentNo { get; set; } 它是否与将其附加到字符串一样简单 代码: public class SupplierTransactionsValidation : AbstractValidator<
public string DocumentNo { get; set; }
它是否与将其附加到字符串一样简单
代码:
public class SupplierTransactionsValidation : AbstractValidator<SageStandardImportInvoces>
{
public SupplierTransactionsValidation()
{
RuleFor(x => x.AnalysisCode1) // code repeated
.NotEqual("None").WithMessage("Please enter a value for AnalysisCode1")
.Length(0, 3);
RuleFor(x => x.AnalysisCode2) // code repeated
.NotEqual("None").WithMessage("Please enter a value for AnalysisCode2")
.Length(0, 3);
RuleFor(x => x.AnalysisCode3) // code repeated
.NotEqual("None").WithMessage("Please enter a value for AnalysisCode3")
.Length(0, 3);
}
}
公共类SupplierTransactionValidation:AbstractValidator
{
公共供应商TransactionValidation()
{
RuleFor(x=>x.AnalysisCode1)//代码重复
.NotEqual(“无”)。带有消息(“请为AnalysisCode1输入一个值”)
.长度(0,3);
RuleFor(x=>x.AnalysisCode2)//代码重复
.NotEqual(“无”)。带有消息(“请为AnalysisCode2输入一个值”)
.长度(0,3);
RuleFor(x=>x.AnalysisCode3)//代码重复
.NotEqual(“无”)。带有消息(“请为AnalysisCode3输入一个值”)
.长度(0,3);
}
}
如果我正确理解了您的问题,您可以创建一个私有方法,通过将表达式主体强制转换为
成员表达式来获取要验证的属性的名称:
public class SupplierTransactionsValidation : AbstractValidator<SageStandardImportInvoces>
{
public SupplierTransactionsValidation()
{
BuildRule(x => x.AnalysisCode1);
BuildRule(x => x.AnalysisCode2);
BuildRule(x => x.AnalysisCode3);
}
private IRuleBuilderOptions<SageStandardImportInvoces, string>
BuildRule(System.Linq.Expressions.Expression<Func<SageStandardImportInvoces, string>> expression)
{
return RuleFor(expression)
.NotEqual("None")
.WithMessage($"Please enter a value for {(expression.Body as System.Linq.Expressions.MemberExpression)?.Member.Name}")
.Length(0, 3);
}
}
公共类SupplierTransactionValidation:AbstractValidator
{
公共供应商TransactionValidation()
{
BuildRule(x=>x.AnalysisCode1);
BuildRule(x=>x.AnalysisCode2);
BuildRule(x=>x.AnalysisCode3);
}
私有IRuleBuilderOptions
BuildRule(System.Linq.Expressions.Expression)
{
返回规则(表达式)
.NotEqual(“无”)
.WithMessage($“请为{(expression.Body作为System.Linq.Expressions.MemberExpression)?.Member.Name}输入一个值”)
.长度(0,3);
}
}
这样,您就不必重复您的逻辑。如何将“AnalysisCode1-3”属性融入到这张图片中?DocumentNo或分析代码属性是否存在问题?你的问题不清楚。