By the way, in case you are interested in how server-side validation works behind the scenes:
When the page is validated, it triggers the Validate method on all of the validation controls on the page. The Validate method is part of the IValidator implementation of BaseValidator.
The Validate method in turn calls the EvaluateIsValid method, which is an abstract method which is overridden in any control that inherits BaseValidator. The following code shows the override from the RequiredFieldValidator class:
Code:
protected override bool EvaluateIsValid()
{
string controlValidationValue = base.GetControlValidationValue(base.ControlToValidate);
return ((controlValidationValue == null) || !controlValidationValue.Trim().Equals(this.InitialValue.Trim()));
}
As you can see, it returns true if there is a non-null value for the control that is being validated.
Again, this is all performed on the server side and is built-in functionality.