Как я могу использовать простые валидаторы (не специфичные для свойств) внутри свободного класса валидаторов?

1

Я использую свободный валидатор для.net, и он отлично работает, чтобы проверить состояние всех свойств моих объектов следующим образом:

RuleFor(h => h.Applications).NotEmpty().WithName("Applications");

RuleFor(h => h.OwnerId).GreaterThan(0).WithMessage("You need to choose a owner");

но я обнаружил, что добавляю дополнительную логику проверки в моем классе Controller (за пределами моего свободного класса проверки), добавляя в код, подобный приведенному ниже, для заклинивания дополнительной проверки (что не является специфичным для свойства)

 if (!Model.IsEntitledToEdit(project))
 {
    ModelState.AddModelError(string.Empty, "You are not entitled to save changes.");
}

есть ли какой-либо способ включить этот тип проверки внутри свободного класса валидатора (так что я могу сохранить всю свою проверку в одном месте)

Теги:
validation
asp.net-mvc
fluentvalidation

1 ответ

0

Если вы можете получить вызов метода в форме свойства, вы можете это сделать.

Например:

RuleFor(h => h.CanEditFooProjects).Equals(true).WithMessage("You are not entitled to save changes.");

Однако, я предполагаю, что код выглядит следующим образом:

if (!Model.IsEntitledToEdit(project))

... вероятно, проверяет полномочия на редактирование объектов проекта.

Вы можете обернуть бизнес-логику в свойствах getter...

public bool CanEditFooProjects {
    get { 
        if( {some condition}) 
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

... тогда вы могли бы иметь правило FluentValidation, просто определенное в одном месте.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню