Hey there Peanut, I recently came across the same problem that you're facing. I implemented some client-side JavaScript to control required field validators based on user interactions in the UI. Despite this, the server-side validation was still being triggered.
To tackle this issue, I introduced a function during the page load process to disable my validators according to the same conditions as those in my JavaScript logic. For instance, it hinged upon whether a radio button had been selected:
this.requiredValidator.Enabled = this.myRadioButton.Checked;
Interestingly, this workaround seemed effective on the second page load but not initially. Upon further investigation, I realized that the wrong radio button was recognized as checked when that line of code was executed. The control's ViewState/Post Data hadn't been applied at the exact moment I verified its state for disabling the validator. This setup during the load phase aimed to preemptively deactivate the validator before any triggering occurred.
The key seems to lie in implementing something akin to the snippet above AFTER ViewState is set but BEFORE the validators come into play.
Following palehorse's suggestion, I opted to override the Validate() method. This approach successfully ensured that server-side validators adapted their status based on the user's current selections.