2012-03-16 24 views
16

Estoy usando el SetCollectionValidator para una colección genérica. Mi colección es una lista de:Mensaje personalizado con la colección de validación con fluidez

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

tengo la configuración de validación y de trabajo de modo que cuando un elemento no es válido el mensaje de error es algo así como: " 'QuestionName' no debe estar vacío". Me gustaría que el mensaje de error dijera algo como "La primera pregunta" no debe estar vacía. (donde la primera pregunta es el valor de QuestionName para uno de los elementos).

Supongo que mi pregunta es: ¿es posible usar el valor de una variable en el mensaje de error o en el nombre de la propiedad?

+0

que se deben implementar en el objeto de colección, no es el único elemento (que no y no debe saber cuántos hermanos tiene) – Alex

Respuesta

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

He encontrado esta información en 1 minuto :) Leer la documentación para esta biblioteca, porque hay muy poca información al respecto en la web.

Además, debe utilizar la colección de validación:

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

public class AnswersModel 
{ 
    public List<Answer> Answers{get;set;} 
} 
Cuestiones relacionadas