Fluent Validation输出当前记录信息
Fluent Validation output current record information
好的,我正在使用 Fluent Validation 作为我的 类 我想知道的事情之一。如何确定哪条记录有问题,例如下面的
被归类为客户可以参考的数字我将如何使用 Fluent Validation 更改下面的字符串以将其正在处理的当前记录输出给客户的文档号。
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);
}
}
如果我对你的问题的理解正确,你可以创建一个私有方法,通过将表达式的主体转换为 MemberExpression
:[=12 来获取要验证的 属性 的名称=]
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);
}
}
这样你就不用重复你的逻辑了。
好的,我正在使用 Fluent Validation 作为我的 类 我想知道的事情之一。如何确定哪条记录有问题,例如下面的
被归类为客户可以参考的数字我将如何使用 Fluent Validation 更改下面的字符串以将其正在处理的当前记录输出给客户的文档号。
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);
}
}
如果我对你的问题的理解正确,你可以创建一个私有方法,通过将表达式的主体转换为 MemberExpression
:[=12 来获取要验证的 属性 的名称=]
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);
}
}
这样你就不用重复你的逻辑了。