C# FluentValidation和自定义消息,告诉用户允许/期望哪些值
考虑以下验证器,它按预期工作:C# FluentValidation和自定义消息,告诉用户允许/期望哪些值,c#,fluentvalidation,C#,Fluentvalidation,考虑以下验证器,它按预期工作: public class NewOrderSingleValidator : AbstractValidator<NewOrderSingle> { public NewOrderSingleValidator() { RuleFor(o => o.OrdType.getValue()) .Must(p => p == OrdType.LIMIT || p == OrdType.MAR
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());
}
}
这将生成以下消息(或类似消息):
错误!提供值:FOO!预期限制或市场
我认为在这种情况下,您可以尝试将代码重构为如下内容:
var allowed = new [] {OrdType.LIMIT, OrdType.MARKET};
RuleFor(o => o.OrdType.getValue())
.Must(p => allowed.Contains(p))
.WithMessage($"Error! Provided value: {{PropertyValue}}! Expected values: {string.Join(", ", allowed)}")
.When(o => o.IsSetOrdType());
我真的不明白文档的含义是什么:
这意味着,PropertyValue
占位符将被提供给相应用户的值替换。一些内置的占位符不仅仅是PropertyValue
和PropertyName
var allowed = new [] {OrdType.LIMIT, OrdType.MARKET};
RuleFor(o => o.OrdType.getValue())
.Must(p => allowed.Contains(p))
.WithMessage($"Error! Provided value: {{PropertyValue}}! Expected values: {string.Join(", ", allowed)}")
.When(o => o.IsSetOrdType());