2012-04-04 104 views
0

我想验证日期是否有效,这意味着它不在将来,并确保它的合法日期,即03/32/2012无效。我目前的作品仅用于验证日期是否有效,但在将日期放入日期时不起作用。另外我有一个问题,如果有人输入日期如03/32/2012它会说它无效,但他们仍然可以点击保存按钮,然后发生异常。解决这个问题的最好方法是什么?使用ASP.NET验证器进行日期验证

这里是我的代码:

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

回答

1

我已将ValidationGroup设置为MaskedEditValidator,并解决了我的问题。此外,为了解决不允许将来的日期,我在.cs文件中完成了以下内容。我的所有问题都已解决。谢谢。 :)

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

您还可以使用CustomValidator和点ClientValidationFunction到自定义JavaScript函数。

这样的函数看起来就像±

功能validateField(源,参数){ args.IsValid = TRUE; }

在javascript中您可以使用以下方法来检查,如果日期是有效的±

var timestamp = Date.parse(textBoxValue) 

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

} 

然后,您可以比较d为当前日期,以检查它是否在未来。

+0

嘿谢谢你的回复。我已经添加了你建议的代码,但是我仍然没有得到错误通知。 – 2012-04-04 20:45:14

+0

你能用新代码更新你的问题吗? – 2012-04-04 20:49:13

+0

我已经添加了一个ValidationGroup =“vgMyGroup”到MaskedEditValidator,它不会让用户提交,除非日期是正确的,并且工作正常...现在我只需要让它工作,以便用户不能输入未来的日期,如果他们做也给错误。 MaskEditExtender上有一个参数来调用ClientValidationFunction,但它看起来并不像它的JavaScript甚至... – 2012-04-05 13:12:14