2015-10-23 6 views
0

Я успешно использовал 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.

ответ

0

Это была проблема с моим пользовательским валидатором.

Я следую за this pattern, что делает его более индивидуальным и переносит удаленный атрибут MVC.

заменив его более «нормальной» валидатора, и этот бит работает отлично:

.WithMessage("{0} is not valid", 
          p => p.MyOtherField 
         ) 
     ; 

 Смежные вопросы

  • Нет связанных вопросов^_^