使用ASP.NET验证程序进行日期验证

使用ASP.NET验证程序进行日期验证,asp.net,Asp.net,我正在尝试验证该日期是否有效,也就是说它不是在未来,并确保它是一个合法的日期,即2012年3月32日无效。我目前拥有的只是用来验证日期是否有效,但当我在将来放置日期时,它不起作用。此外,我有一个问题,如果有人输入一个日期,如2012年3月32日,它会说这是无效的,但他们仍然可以单击保存按钮,然后异常将发生。最好的方法是什么 这是我的密码: <asp:TextBox ID="tbDate" runat="server" Text=""></asp:TextBox> <

我正在尝试验证该日期是否有效,也就是说它不是在未来,并确保它是一个合法的日期,即2012年3月32日无效。我目前拥有的只是用来验证日期是否有效,但当我在将来放置日期时,它不起作用。此外,我有一个问题,如果有人输入一个日期,如2012年3月32日,它会说这是无效的,但他们仍然可以单击保存按钮,然后异常将发生。最好的方法是什么

这是我的密码:

<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");
    }