Как передать значение в сообщение об ошибке, используя свободную проверку - PullRequest
4 голосов
/ 24 июня 2011

Можно ли передать значение в сообщение об ошибке.Я пробовал что-то вроде этого:

RuleFor(x => x.ForeName).Length(1, 255).WithLocalizedMessage(() => String.Format(ValidationErrors.TooLong, "255"));

ValidationErrors - это мой файл ресурсов, который содержит:

TooLong Пожалуйста, используйте менее {0} символов.

Это:

RuleFor(x => x.ForeName).Length(1, 255).WithLocalizedMessage(() => ValidationErrors.TooLong);

отлично работает.

1 Ответ

6 голосов
/ 24 июня 2011

В текущей версии FluentValidation (v2) это не поддерживается при использовании локализованных сообщений.

Первый аргумент WithLocalizedMessage всегда должен идентифицировать свойство ресурса - вы не можете поместить в него произвольный код (например, вызов string.format).

Если вы используете нелокализованное сообщение, вы можете сделать это:

RuleFor(x => x.Property).Length(1,255).WithMessage("Max number of chars is {0}", "255");

Вы также сможете использовать этот подход с локализованными сообщениями об ошибках начиная с FluentValidation v3, но пока нет бинарной версии, поэтому, если вы хотите использовать это, вы можете получить и собрать исходный код с сайта проекта.

В качестве альтернативы, вместо использования числовых заполнителей вы можете использовать встроенную поддержку FV для именованных заполнителей для валидаторов по умолчанию. Поэтому, если вы используете .Length (1, 255), вы можете использовать {MaxLength} внутри сообщения об ошибке вместо {0}:

Пожалуйста, используйте меньше, чем {MaxLength} символов.

... и FV автоматически заменит это значение, которое вы ввели как максимальное. В документации .

содержится полный список всех названных заполнителей .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...