Арахис, я только что описал ту же проблему, что и вы. На стороне клиента у меня есть javascript, который отключает обязательные валидаторы полей в зависимости от их выбора в пользовательском интерфейсе. Однако проверка на стороне сервера продолжала выполняться.
Во время загрузки я добавил метод для отключения моих валидаторов, используя те же правила, что и в JavaScript. В моем случае это зависело от выбора пользователем переключателя:
this.requiredValidator.Enabled = this.myRadioButton.Checked;
Кажется, это работает при загрузке второй страницы, но не при первой. После отладки я обнаружил, что неправильная радиокнопка считается проверенной, когда эта линия срабатывает. Просмотр состояния / данных поста не был применен к элементу управления в тот момент, когда я проверял его, чтобы отключить мой валидатор. Причина, по которой я поместил это во время загрузки, состояла в том, чтобы удостовериться, что я отключил валидатор до его запуска.
Итак, похоже, что решение состоит в том, чтобы иметь что-то вроде строки над AFTER ViewState, но ПЕРЕД валидаторами.
Перегрузка метода Validate (), как предложил palehorse, сработала и позволила мне убедиться, что валидаторы на стороне сервера были включены / отключены на основе текущего выбора пользователя.