2012-03-16 92 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’不能爲空」。我希望錯誤信息能夠說出類似於「'第一個問題''的內容,不能爲空。」 (其中第一個問題是其中一個項目的QuestionName的值)。

我想我的問題是:是否有可能在錯誤消息或屬性名稱中使用變量的值?

+0

這應該落實到集合對象,而不是單個項目(不,應該不知道有多少兄弟姐妹有) – Alex 2012-03-22 08:28:15

回答

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;} 
}