Проверка списка <T>Чтобы убедиться, что список содержит в списке один элемент с аннотациями данных MVC C# - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь проверить общий список c, например, List<Sales>, чтобы в списке содержался хотя бы один элемент, добавленный с помощью флажков.

Вот как я пытался это сделать:

  public class SalesViewModel :IValidatableObject
    {

        [Required]
        public List<Sales> AllSales{ get; set; }


        public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
        {
            if (AllSales.Length == 0)
                yield return new ValidationResult("Please pick one sales item");
        }
    }

Просто хочу знать, правильный ли это подход к сценарию такого типа.

1 Ответ

4 голосов
/ 28 апреля 2020

Вы также можете создать пользовательский атрибут проверки , подобный следующему:

public class EnsureOneItemAttribute : ValidationAttribute
{
  public override bool IsValid(object value)
  {
    var list = value as IList;
    if (list != null)
    {
       return list.Count > 0;
    }
    return false;
  }     
}

, а затем применить его следующим образом:

[EnsureOneItemAttribute (ErrorMessage = "Please pick one sales item")]
public List<Sales> AllSales{ get; set; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...