Com esta função é possível validar datas com ASP.NET utilizando C#, inclusive anos bissestos.
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void textBox1_Leave_1(object sender, EventArgs e) { if (textBox1.Text != "" && (textBox1.Text.Length < 10)) { MessageBox.Show("Data Invalida", "Aviso do Sistema"); textBox1.Clear(); return; } string dia, mes, ano; string aux; aux = textBox1.Text; dia = aux.Substring(0, 2); mes = aux.Substring(3, 2); ano = aux.Substring(6, 4); if (dia != "01" && dia != "02" && dia != "03" && dia != "04" && dia != "05" && dia != "06" && dia != "07" && dia != "08" && dia != "09" && dia != "10" && dia != "11" && dia != "12" && dia != "13" && dia != "14" && dia != "15" && dia != "16" && dia != "17" && dia != "18" && dia != "19" && dia != "20" && dia != "21" && dia != "22" && dia != "23" && dia != "24" && dia != "25" && dia != "26" && dia != "27" && dia != "28" && dia != "29" && dia != "30" && dia != "31") { MessageBox.Show("Data Invalida", "Aviso do Sistema"); textBox1.Clear(); return; } if (mes != "01" && mes != "02" && mes != "03" && mes != "04" && mes != "05" && mes != "06" && mes != "07" && mes != "08" && mes != "09" && mes != "10" && mes != "11" && mes != "12") { MessageBox.Show("Data Invalida", "Aviso do Sistema"); textBox1.Clear(); return; } if ((dia == "29") && (mes == "02")) { if (!(Convert.ToInt32(ano) % 4 == 0) && (Convert.ToInt32(ano) % 100 != 0)) { MessageBox.Show("Data Invalida", "Aviso do Sistema"); textBox1.Clear(); return; } } }