Вот еще некоторая информация о том, почему вы получаете такое поведение, и почему код Чада поможет вам.
В настоящее время ваше приложение работает с настройкой культуры, которая говорит, что даты должны быть мм / дд /гггг (ваш компьютер или веб-сервер работает как американец).Если вы посмотрите на JavaScript, который ASP.NET генерирует для валидаторов, вы увидите, что при сравнении он сначала проверяет, является ли тип данных ControlToValidate корректным.Он делает это путем синтаксического анализа введенного значения с помощью RegEx и ожидает, что значение месяца будет первым, а затем днем (из-за настройки культуры).Когда он видит ваше значение 25, он не считает его действительным месяцем и, следовательно, говорит, что ваша дата недействительна.Затем он возвращает false, даже не проверяя значение даты во втором поле и не пытаясь сравнить их.
Во втором примере проверка проходит успешно, потому что сначала она проверяет тип данных даты окончания, которая МОЖЕТ быть допустимой мм./ дд / гггг дата.Затем он проверяет тип данных второй даты, который из-за 28 заставляет его думать, что это недопустимая дата.Затем валидатор возвращает истину, поскольку предполагает, что действительная дата больше недействительной.
Код Чада установит в культуре потока вашей страницы тот, который использует формат dd / MM / yyyy,и, следовательно, ваши валидаторы будут использовать это при проверке правильности ваших дат.
Вот страница MSDN с дополнительной информацией о настройках культуры и о том, что они делают.