使用ASP.NET验证程序进行日期验证
我正在尝试验证该日期是否有效,也就是说它不是在未来,并确保它是一个合法的日期,即2012年3月32日无效。我目前拥有的只是用来验证日期是否有效,但当我在将来放置日期时,它不起作用。此外,我有一个问题,如果有人输入一个日期,如2012年3月32日,它会说这是无效的,但他们仍然可以单击保存按钮,然后异常将发生。最好的方法是什么 这是我的密码:使用ASP.NET验证程序进行日期验证,asp.net,Asp.net,我正在尝试验证该日期是否有效,也就是说它不是在未来,并确保它是一个合法的日期,即2012年3月32日无效。我目前拥有的只是用来验证日期是否有效,但当我在将来放置日期时,它不起作用。此外,我有一个问题,如果有人输入一个日期,如2012年3月32日,它会说这是无效的,但他们仍然可以单击保存按钮,然后异常将发生。最好的方法是什么 这是我的密码: <asp:TextBox ID="tbDate" runat="server" Text=""></asp:TextBox> <
<asp:TextBox ID="tbDate" runat="server" Text=""></asp:TextBox>
<asp:Image ID="imgCalendar" runat="server" ImageUrl="~/App_Themes/Sugar2006/images/Calendar_scheduleHS.png" ImageAlign="Middle" />
<asp:CalendarExtender ID="ce" runat="server" TargetControlID ="tbDate" PopupButtonID="imgCalendar" />
<asp:MaskedEditExtender ID="mex" runat="server"
TargetControlID="tbDate"
Mask="99/99/9999"
MaskType="Date"
MessageValidatorTip="true"
OnFocusCssClass="MaskedEditFocus"
OnInvalidCssClass="MaskedEditError" />
<asp:MaskedEditValidator ID="mev" runat="server"
ControlToValidate="tbDate"
ControlExtender="mex"
Display="Dynamic"
InvalidValueMessage="This date is invalid!" Font-Bold="True"
ForeColor="#D50000" />
<asp:RequiredFieldValidator runat="server" ID="DReq"
ControlToValidate="tbDate"
Display="None"
ErrorMessage="A Date is required." ValidationGroup="vgMyGroup"/>
<asp:ValidatorCalloutExtender runat="Server" ID="DReqE"
TargetControlID="DReq"
HighlightCssClass="validatorCalloutHighlight" />
您还可以使用和将ClientValidationFunction
指向自定义javascript函数
这样的函数看起来像±
函数validateField(源,参数){
args.IsValid=true;
}
在javascript中,您可以使用以下内容检查日期是否有效±
var timestamp = Date.parse(textBoxValue)
if (isNaN(timestamp)==false)
{
var d = new Date(timestamp);
}
然后,您可以将
d
与当前日期进行比较,以检查它是否在将来。我已在MaskedEditValidator
上设置了ValidationGroup
,解决了我的问题。为了修复不允许将来的日期,我在.cs文件中做了以下操作。我所有的问题都解决了。谢谢。:)
嘿,谢谢你的回复。我已经添加了您建议的代码,但仍然没有收到错误通知。我已经向MaskedEditValidator添加了ValidationGroup=“vgMyGroup”,除非日期正确且有效,否则不会让用户提交。。。现在我只需要让它工作,这样用户就不能输入未来的日期,如果他们输入了,也会给出错误。MaskedItemXtender上有一个参数可以调用ClientValidationFunction,但它似乎并没有击中javascript…我还放置了MaximumValue='',它可以工作,但不会通过单击按钮进行验证,这很有趣。
protected void mev_Init(object sender, EventArgs e) {
((MaskedEditValidator)sender).MaximumValue = DateTime.Now.ToString("MM/dd/yyyy");
}