I suggest you use an asp:CustomValidator
with a clientside javascript function.
Custom Validator
You could do something like this (note, this is untested, just off the top of my head):
<asp:CustomValidator ID="CustomValidator1" runat="server"
EnableClientScript="true"
ErrorMessage="less than 18"
ClientValidationFunction="checkDate"
ControlToValidate="txtDOB">
</asp:CustomValidator>
Assuming the date is written in this format "dd/MM/yyyy"
function checkDate() {
var enteredDate=document.getElementById('<%=txtDOB.ClientID%>').value;
var dateValues=enteredDate.split("/");
var dateToCheck = new Date(dateValues[2], dateValues[1]-1, dateValues[0]);
var today = new Date();
var dateValid = new Date(today.getFullYear()-18, today.getMonth()-1, today.getDate());
if (dateToCheck < dateValid) {
args.IsValid = false;
}
else {
args.IsValid = true;
}
}
Note
- javascript uses 0 for January hence the -1 on the month.
- You should add a ServerValidation function to the custom validator in case javascript is disabled.