Преимущества пользовательских атрибутов проверки по сравнению с ручной проверкой в ​​ASP. NET Core? - PullRequest
0 голосов
/ 16 января 2020

Каковы преимущества использования пользовательских проверок данных в форме атрибутов для наших моделей по сравнению с выполнением этих проверок проверок в действии контроллера?

Небольшой пример.

public class CollectionHasElementsAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        if (value is IList<string> stringCollection)
        {
            return stringCollection.Count > 0
        }

        return false;
    }
}

против

public IActionResult someAction(List<string> stringCollection)
{
    if (stringCollection.Count <= 0)
    {
        // return your error the way you want to here
    }
}

1 Ответ

1 голос
/ 16 января 2020

Основной причиной будет простота и следование принципу DRY. Допустим, у вас есть 10 контроллеров, которые выполняют бизнес-логику c с использованием List<string> stringCollection, теперь вам нужно вручную писать if(), делать это снова и снова на всех 10 контроллерах.

С атрибутом, который вы просто пишете if() только один раз в том месте, где выполняется проверка, и просто добавьте атрибут.

Лучшей альтернативой написанию собственных условий проверки является использование библиотеки, подобной FluentValidation -> Docs

Если вы хотите увидеть еще несколько удивительных библиотек, подобных этой, посмотрите этот список

...