Я успешно использовал WithMessage в следующем виде:Fluent Validation WithMessage не работает правильно с SetValidator
RuleFor(p => p.MyField)
.NotEmpty()
.WithMessage("{0} is Required",
p => p.SomeOtherField
);
Это позволяет значение SomeOtherField для использования в сообщении об ошибке.
У меня есть более сложное требование, где я использую SetValidator с моим собственным настраиваемым PropertyValidator следующим образом:
То, что я думал, что будет работать было следующее:
RuleFor(x => x.MyField)
.SetValidator(
new RemoteValidator(
"Validate",
"Home",
System.Web.Mvc.HttpVerbs.Post,
"*.SomeOtherProperty1,*.SomeOtherProperty2")
)
.WithMessage("{0} is not valid",
p => p.MyOtherField
)
;
... но это не , Когда проверка завершается неудачно, я получаю сообщение:
{0} не является действительным
например. {0} не заменяется
Любые идеи?
От here Я нашел концепцию PropertyNameResolver, которая звучит так, как будто она может поместиться, но я не могу понять, как ее настроить. Пример на этой ссылке дает:
ValidatorOptions.PropertyNameResolver = (type, member) => {
if(member != null) {
return member.Name + "Foo";
}
return null;
};
Я использую Fluent Validations v5.6.2.