are you using validations controls, right? this controls first try to validate on client side, so, event will be fired only if is valid or if js is disabled on client bronwser. On code behind you need to verify manually.
<div>
<asp:textbox id="TextBox1" runat="server" xmlns:asp="#unknown"></asp:textbox>
<asp:requiredfieldvalidator xmlns:asp="#unknown">
ID="rfv1" runat="server" ErrorMessage="*" ControlToValidate="TextBox1">
</asp:requiredfieldvalidator>
<br />
<asp:button id="Button1" runat="server" text="Button" xmlns:asp="#unknown" />
<br />
<asp:literal id="Literal1" runat="server" xmlns:asp="#unknown"></asp:literal>
</div>
code behind:
void Button1_Click(object sender, EventArgs e)
{
Page.Validate();
if (Page.IsValid)
{
Literal1.Text = "valid";
}
else
{
Literal1.Text = "not valid";
}
}