【发布时间】:2020-06-15 15:08:36
【问题描述】:
考虑以下验证器,它按预期工作:
public class NewOrderSingleValidator : AbstractValidator<NewOrderSingle>
{
public NewOrderSingleValidator()
{
RuleFor(o => o.OrdType.getValue())
.Must(p => p == OrdType.LIMIT || p == OrdType.MARKET)
.WithMessage("Provided OrdType is not allowed, the value was: {PropertyValue}")
.When(o => o.IsSetOrdType());
}
}
只要验证失败,验证结果就会包含错误Provided OrdType is not allowed, the value was: FOO。好,太棒了!
但现在我想知道如何才能告诉用户允许哪些值,而无需在消息中重复我的规则。
我不太明白documentation 的含义:
‘{PropertyValue}’ - 正在验证的属性的值 其中包括谓词验证器(‘Must’验证器)、电子邮件和正则表达式验证器。
我希望能够做这样的事情:
public class NewOrderSingleValidator : AbstractValidator<NewOrderSingle>
{
public NewOrderSingleValidator()
{
RuleFor(o => o.OrdType.getValue())
.Must(p => p == OrdType.LIMIT || p == OrdType.MARKET)
.WithMessage("Error! Provided value: {PropertyValue}! Expected values: {Must}")
.When(o => o.IsSetOrdType());
}
}
这应该会生成以下消息(或类似消息):Error! Provided value: FOO! Expected LIMIT or MARKET
【问题讨论】:
标签: c# fluentvalidation