Я использую Foolproof Validation, поэтому я могу использовать атрибуты [RequiredIf] в моей модели просмотра. Проблема в том, что я хотел бы инициировать проверку в моем коде, используя ту же логику вне контроллера.Вручную запускать надежную проверку
Я попытался создать свой собственный контекст проверки и использовать Validatior.TryValidateObject; однако он не работает с помощью проверки подлинности RequiredIf Foolproof. Есть ли способ взять мою модель и проверить ее, кроме как передать ее контроллеру?
Я использую неправильный подход?
Вот мой код:
var draftModel = _draftHelper.LoadDraft(draftId);
var validationResults = new List<ValidationResult>();
var vc = new ValidationContext(draftModel, null, null);
var isValidDraft = Validator.TryValidateObject(draftModel, vc,
validationResults, true);
И Я получаю ошибку на линии TryValidateObject
System.NotImplementedException: Метод или операция не реализована.
Спасибо @Patrick Маги, который может быть правильный подход. Я не понял, что Fluent также поддерживает проверку на стороне клиента. Я проверю его сегодня, и если он также предоставит пользовательскую проверку на стороне клиента, то это будет мой ответ. –
Вы также можете уйти с FluentValidation, используя REMOTE-проверку для таких вещей, как электронные письма, которые должны быть уникальными, используя Ajax для проверки без необходимости повторной отправки формы. В моем проекте также есть пример. Поскольку функция Predicate (Must) по умолчанию не поддерживает удаленное подтверждение. Тем не менее, вы можете создавать собственные связующие. –
Спасибо @Patrick Magee, я проверил ваше решение, и он отлично работает. Это решило мою проблему. Что касается [Remote], который будет работать; однако, по-прежнему, по-прежнему предпочитаю настраиваемые валидаторы клиентской стороны. –