2012-03-16 95 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;} 
}