У меня есть несколько сложных сценариев проверки, в которых мне нужна помощь.
У меня есть ViewModel, которая выглядит так:
public class FooModel {
public class BarModel {
public string Name {get;set;}
public DateTime? BirthDate {get;set;}
}
public List<BarModel> Bars {get;set;}
// 10 BarModels added in controller
public FooModel() { Bars = new List<BarModel>(); }
public bool Choose1 {get;set;}
public bool Choose2 {get;set;}
}
Теперь, в зависимости от значения Choose1, мне нужно либо подтвердить, что все BarModel имеют набор данных (Обязательная проверка), если Choose1 истинно, или если Choose1 ложно, то первые два элемента в списке будут игнорироваться. 1006 *
Во-вторых, если Choose2 имеет значение true, тогда я хочу собирать только дату рождения для каждого элемента в столбцах и игнорировать свойство Name.
Я посмотрел на пользовательский атрибут, но, похоже, нет хорошего способа применить его к вложенному классу и получить значения в родительском классе. Я также не нашел способа, которым я мог бы легко проверять только некоторые элементы в коллекции.
Есть предложения?
EDIT:
Я также рассмотрел IValidatableObject, но меня интересует решение, которое также будет работать на стороне клиента, если это возможно. Есть ли другие варианты?