Проверьте список в зависимости от другого поля в форме asp.net core 2 - PullRequest
0 голосов
/ 11 июня 2018

У меня есть форма с полем int и список другой формы (класса).Я хочу проверить формы внутри списка в зависимости от поля int.

int field может иметь значения 1 или 2. В случае 2 проверить формы списка, в противном случае нет (я нене нужны формы списка).

Проблема в том, что я не могу найти способ получить значение этого поля int в другой форме.У объекта ValidationContext есть только экземпляр фактического класса, но не родительский (основная форма).

Я создал пользовательскую проверку для int field, чтобы очистить список в случае, если его значениеравен 1 (мне не нужен список для проверки).

Проблема с последним, он делает галочку (очищает список), но ModelState.IsValid возвращает false, и я делаюне появляется никаких сообщений об ошибках.

Если я удаляю пользовательскую проверку, в списке отображаются ошибки проверки требуемых форм.

public class ReserveForm
{
    [Required]
    [DataMember]
    [Range(1, 2)]
    [OnTypeValidation]
    public int type { get; set; }

    [MultiFlights]
    public List<MultiFlightForm> multiFligths {get;set;}
}

public class MultiFlightForm
{
    [Required]
    public String from { get; set; }

    [Required]
    public String to { get; set; }

    [Required]
    public override DateTime DateTime { get; set; }
}

public class OnTypeValidationAttribute: ValidationAttribute
{
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        if ((int)value != 2) {
            ReserveForm reserveForm = (ReserveForm)validationContext.ObjectInstance;
            reserveForm.multiFligths.Clear();
        }

        return ValidationResult.Success;
    }
}

Как вы можете видеть, наReserveForm (основная форма) У меня есть собственный атрибут в списке под названием MultiFlights.Проблема в том, что он вызывается только тогда, когда список пуст или равен нулю.

Я не могу добавить настраиваемые атрибуты, чтобы выполнить трюк с полями, в другую / подформу (MultiFlightForm), потому что я не могуиметь доступ к полю type.

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