Настраиваемое сообщение с быстрой коллекцией проверок - PullRequest
17 голосов
/ 16 марта 2012

Я использую 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 для одного из элементов).

Я предполагаю, что мой вопрос: возможно ли использовать значение переменной в сообщении об ошибке или имени свойства?

1 Ответ

26 голосов
/ 22 марта 2012
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
      );
}

ОБНОВЛЕНИЕ: синтаксис изменен в новой версии FluentValidation:

WithMessage(answer => $"This message references some other properties: Id: {answer.Id} Title: {answer.Title}"

Документация проверки Fluent: сообщение об ошибке переопределения

Я нашел эту информацию за 1 минуту :) Прочитайте документацию для этой библиотеки, потому что в сети очень мало информации об этом.

Кроме того, вы должны использовать валидатор коллекции:

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

public class AnswersModel
{
    public List<Answer> Answers{get;set;}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...