【发布时间】:2015-08-21 08:51:00
【问题描述】:
我有一个带有自定义日期验证器的表单:
<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;
}
}
}
问题是它工作正常,它检测到它需要检测的内容并触发警告,但是......它触发它为时已晚!如果我在表单中输入了错误的日期,我可以提交它,并且下次我打开带有表单的 modalpopup 以输入新预订时,我会发现有关此错误验证的警告。
我拥有的相同形式的所有其他验证器都可以正常工作。这是启动表单的按钮:
<asp:Button ID="btnNew" runat="server" Text="New" CausesValidation="false" />
它的CausesValidation 设置为 false,这对于普通验证器非常有效。只是自定义的太晚了吗……
有什么建议吗?
【问题讨论】:
标签: c# asp.net customvalidator