2012-03-16 5 views
16

私は、ジェネリックコレクションにSetCollectionValidatorを使用しています。私は検証を設定している項目は、エラーメッセージのようなもので無効であるときに作業流暢な検証コレクションを使用したカスタムメッセージ

public class Answer { 
    public string QuestionConst { get; set; } 
    public string QuestionName { get; set; } 
    public bool Required { get; set; } 
    public string Answer { get; set; } 
} 

:「『QuestionName』が空であってはならない」私のコレクションは、のリストです。エラーメッセージに「最初の質問は空であってはいけません」と言ってほしい。 (最初の質問は項目の1つのQuestionNameの値です)。

私の質問は次のとおりです。エラーメッセージまたはプロパティ名に変数の値を使用することは可能ですか?

+0

コレクションオブジェクトではなく、(それが持っているどのように多くの兄弟を知っているべきではありませんしません)単一の項目に実装する必要があります。

また、あなたは、コレクションのバリデータを使用する必要があります – Alex

答えて

24
public class AnswersModelValidator : AbstractValidator<AnswersModel> 
{ 
    RuleFor(customer => customer.Text) 
     .NotEmpty() 
     .WithMessage("This message references some other properties: Id: {0} Title: {1}", 
     answer => answer.Id, 
     answer => answer.Title 
    ); 
} 

Fluent validation documentation: Overriding error message

それについてはほとんど情報がウェブにあるので、私は、このライブラリの1分:)読むのドキュメントでこの情報を見つけました。

public class AnswersModelValidator : AbstractValidator<AnswersModel> { 
    public AnswersModelValidator() { 
     RuleFor(x => x.Answers).SetCollectionValidator(new AnswerValidator()); 
    } 
} 

public class AnswersModel 
{ 
    public List<Answer> Answers{get;set;} 
} 
関連する問題