Массив должен содержать 1 элемент - программирование
Подтвердить что ты не робот

Массив должен содержать 1 элемент

У меня есть следующий класс:

public class CreateJob
{
    [Required]
    public int JobTypeId { get; set; }
    public string RequestedBy { get; set; }
    public JobTask[] TaskDescriptions { get; set; }
}

Я хотел бы иметь аннотацию данных выше TaskDescriptions, чтобы массив содержал хотя бы один элемент? Очень похоже на [Required]. Возможно ли это?

4b9b3361

Ответ 1

Я видел специальный атрибут проверки, используемый для этого раньше, например:

(Я дал образец со списком, но может быть адаптирован для массива или вы можете использовать список)

public class MustHaveOneElementAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        var list = value as IList;
        if (list != null)
        {
            return list.Count > 0;
        }
        return false;
    }
}
[MustHaveOneElementAttribute (ErrorMessage = "At least a task is required")]
public List<Person> TaskDescriptions { get; private set; }

Ответ 2

Это можно сделать с помощью стандартного атрибута проверки MinLengthAttribute, но работает только для массивов:

public class CreateJob
{
    [Required]
    public int JobTypeId { get; set; }
    public string RequestedBy { get; set; }
    [MinLength(1)]
    public JobTask[] TaskDescriptions { get; set; }
}