Несколько вариантов, которые могут заставить вас задуматься. В случае нескольких действий публикации (например, нажатие кнопки отмены в форме не должно запускать проверку), я убедился, что формы публикуют только одно действие, а все остальное по сути является стилизованной ссылкой. Валидация в этом случае не сработает.
Если, как и в вашем случае, у вас сложная проверка, я бы предложил создать специальный валидатор и зарегистрировать адаптер на стороне клиента, например,
[RequiredIfHasChildren]
Таким образом, вы будете писать собственный атрибут проверки, специальный валидатор модели и некоторый код JavaScript для регистрации нового валидатора на стороне клиента. Подобный подход работал для меня в прошлом, но зависимость от другого свойства модели может быть проблемой.
Надеюсь, это поможет.