У меня была такая же проблема с RequiredFieldValidator (Page.IsValid всегда был верным)
у меня была панель, которую я хотел показать, только когда проверка неверна:
<asp:Panel ID="PanelValidationMessage" CssClass="hide messegeFailed" runat="server">
<p><asp:RequiredFieldValidator ID="RequiredFieldValidatorProductForTransfer"
runat="server"
ValidationGroup="Transfer"
ErrorMessage="Please Select Product for Transfer"
ControlToValidate="DDLProductForTransfer"
InitialValue="0"
SetFocusOnError="true"
Display="Dynamic"></asp:RequiredFieldValidator></p>
</asp:Panel>
это было решено после того, как я изменил атрибут кнопки * CausesValidation"кнопки с" true"на" false":
<asp:Button ID="BtnTransfer"
runat="server"
Text="Transfer Products"
onclick="BtnTransfer_Click"
ValidationGroup="Transfer"
CausesValidation="false"/>
код позади:
Page.Validate("Transfer");
if (Page.IsValid)
{
PanelValidationMessage.CssClass = "hide messegeFailed";
}
else
{
PanelValidationMessage.CssClass = "show messegeFailed";
}