У меня есть форма с полем 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
.