Я думаю, что помимо привязки валидатора к элементу управления, как рекомендовал Чалки, вам нужно сгенерировать скрипт в коде для получения ссылок на ваши элементы управления.
Проблема в том, что вы пытаетесь добавить ссылку на элемент управления, который не существует, пока сайт не запустится. Другими словами, вы пытаетесь создать javascript для ссылки на текстовые поля даты до того, как текстовые поля даты существуют (они не существуют, пока не будет сгенерирована страница). Итак, строки:
`var txtdate1 = document.getElementById('<%=txtdate1.ClientID%>');
`var txtdate2 = document.getElementById('<%=txtdate2.ClientID %>');
не будет работать так, как вы ожидаете (они могут даже не скомпилироваться).
Я бы добавил эти две строки в метод, создавая текстовые поля даты, чтобы у вас были ссылки на jscript:
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "var txtdate1 = document.getElementById('" + txtdate1.ClientID + "');", true);
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "var txtdate2 = document.getElementById('" + txtdate2.ClientID + "');", true);
Это создаст две переменные javascript, txtdate1 и txtdate2, которые можно использовать для ссылки на элементы даты.
Разница в том, что сценарий для поиска элементов управления генерируется в коде одновременно с созданием элементов управления.