Применить обязательный атрибут, если значение было привязано привязкой модели - PullRequest
0 голосов
/ 16 июня 2020

Мне нужно обработать следующий сценарий проверки:

  1. Если выполняется какое-то условие, мы отображаем текстовое поле, которое должно быть обязательным
  2. Если не выполнено значение для свойство должно быть необязательным.

Модель. Примерно так:

public class Setting
{
    [Required]
    public string Domain { get; set; }
}

Возможно ли как-то различить, когда значение поля было пропущено или оно не привязано? Потому что, как я знаю, если значение было опущено или не привязано, его значение будет значением по умолчанию (строка). В этом случае я не могу определить, предоставляется ли Домен

1 Ответ

0 голосов
/ 16 июня 2020

Если у вас есть ситуации, когда это может потребоваться, а может и не потребоваться, лучше всего будет унаследовать ваш Setting класс от IValidatableObject и реализовать свой собственный Validate() метод. Сделайте все необходимые проверки, чтобы увидеть, требуется ли это или нет, и выполните yield return new ValidationResult("Description", new[] { nameof(Domain ) }), чтобы объяснить, почему это недействительно.

Если вы не можете сделать это определение внутри своего класса Settings, тогда вы вероятно, придется сделать это в действии вашего контроллера и использовать что-то вроде ModelState.AddModelError("Description", nameof(model.Domain))); с последующей проверкой ModelState.IsValid, чтобы увидеть, должно ли действие завершиться и вернуть перенаправление / просмотр

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...