使用ASP.NET Validator进行日期验证

时间:2012-04-04 20:06:17

标签: asp.net

我试图验证日期是否有效意味着它不在将来,并确保其合法日期,即03/32/2012无效。我目前的工作只是验证日期是否有效,但是当我将来安排日期时它不起作用。此外,我有一个问题,如果有人输入像03/32/2012这样的日期,它会说它无效但他们仍然可以点击保存按钮然后会发生异常。解决这个问题的最佳方式是什么。

这是我的代码:

<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" />

2 个答案:

答案 0 :(得分:1)

我在ValidationGroup上设置了MaskedEditValidator,这解决了我的问题。另外为了修复不允许将来的日期,我在.cs文件中完成了以下操作。我的所有问题都得到了解决。谢谢。 :)

    protected void mev_Init(object sender, EventArgs e) {
        ((MaskedEditValidator)sender).MaximumValue = DateTime.Now.ToString("MM/dd/yyyy");
    }

答案 1 :(得分:0)

您还可以使用CustomValidator并将ClientValidationFunction指向自定义JavaScript功能。

这样的功能看起来像是

function validateField(source,args){        args.IsValid = true;      }

在javascript中,您可以使用以下内容检查日期是否有效±

var timestamp = Date.parse(textBoxValue)

if (isNaN(timestamp)==false)
{
    var d = new Date(timestamp);

}

然后,您可以将d与当前日期进行比较,以检查它是否在将来。