У меня есть список Multiselect на ASP. net Ядро и валидация не просыпается - PullRequest
0 голосов
/ 23 января 2020

У меня есть поле выбора

<select asp-for="UserCitizenships" asp-items="Model.CitizenshipsList" class="select2 required">

, которое заполняется списком множественного выбора

public MultiSelectList CitizenshipsList { get; set; }

И возвращает список Int

 public List<int> UserCitizenships

, который я обрабатывать вручную в бэкэнде. Проверка из аннотаций данных не работает. При отправке формы мне нужно заполнить хотя бы одно свойство. Есть идеи?

  [Required(ErrorMessage = Helpers.ErrorMessages.Required)]
    public List<int> UserCitizenships
    {
        get
        {
           ....

1 Ответ

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

Я бы подумал, что сработает следующее

[Required, MinLength(1, ErrorMessage = "At least one item required")]
public List<int> UserCitizenships { get; set; }

В качестве альтернативы вы можете создать пользовательскую аннотацию данных или использовать проверку на уровне класса

public class YourClass : IValidatableObject
{
    [Required]
    List<int> UserCitizenships

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (UserCitizenships.Count < 1)
        {
            yield return new ValidationResult(
                $"At least one UserCitizenship should be specified.",
                new[] { nameof(UserCitizenships) });
        }
    }   
}
...