У меня есть форма с пользовательским валидатором для даты:
<asp:CustomValidator runat="server" ID="cusCustom"
ControlToValidate="fdate"
Display="None"
OnServerValidate="customdate"
ErrorMessage="You need to book 24 hours earlier" />
<ajaxToolkit:ValidatorCalloutExtender
ID="ValidatorCalloutExtender4"
TargetControlId="cusCustom" runat="server">
</ajaxToolkit:ValidatorCalloutExtender>
И функция позади:
protected void customdate(object sender, ServerValidateEventArgs e)
{
string dateString = String.Format("{0} {1}:{2}:00", fdate.Text, TimeSelector1.Hour, TimeSelector1.Minute);
DateTime selectedDateTime = new DateTime();
if (DateTime.TryParse(dateString, out selectedDateTime))
{
if (selectedDateTime > DateTime.Now.AddHours(24))
{
e.IsValid = true;
} else {
e.IsValid = false;
}
}
}
Проблема в том, что он работает нормально, он обнаруживает то, что ему нужно обнаружить, и выдает предупреждение, но... оно выдает его слишком поздно! Если я введу неправильную дату в форму, я смогу отправить ее, и я найду предупреждение об этой неправильной проверке в следующий раз, когда открою модальное всплывающее окно с формой для ввода нового бронирования.
Все остальные валидаторы, которые у меня есть в той же форме, работают нормально. Это кнопка, которая запускает форму:
<asp:Button ID="btnNew" runat="server" Text="New" CausesValidation="false" />
Для CausesValidation
установлено значение false, и это очень хорошо работает для обычных валидаторов. Только пользовательский, который запускается слишком поздно...
Какие-либо предложения?