为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

小唯快跑啊 2019-11-30 13:30:30
我正在尝试使用ASP.NET RangeValidator来验证文本框上的日期。在文本框中输入的日期格式为dd MMMM yyyy。如何使用范围验证器来验证有效日期?如果我输入1000年1月1日作为最小值或最大值,则会出现一个错误,提示无法将值转换为日期类型,但是如果我使用其他格式,它将输入的文本视为无效。下面是我的代码:<asp:TextBox     runat="server"     ID="txtDatecompleted" /><cc2:CalendarExtender    ID="datecompletedExtender"     runat="server"    TargetControlID="txtDatecompleted"    Format="dd MMMM yyyy"/>  <asp:RangeValidator     runat="server"     ID="RangeValidator1"     Type="Date"     ControlToValidate="txtDatecompleted"     MaximumValue="9999/12/28"     MinimumValue="1000/12/28"     ErrorMessage="enter valid date"     Display="None"/><cc2:ValidatorCalloutExtender     ID="RangeValidator1_ValidatorCalloutExtender"     runat="server"    Enabled="True"    TargetControlID="RangeValidator1"></cc2:ValidatorCalloutExtender>
查看完整描述

3 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

CustomValidator也可以在这里工作:


<asp:CustomValidator runat="server"

    ID="valDateRange" 

    ControlToValidate="txtDatecompleted"

    onservervalidate="valDateRange_ServerValidate" 

    ErrorMessage="enter valid date" />

后台代码:


protected void valDateRange_ServerValidate(object source, ServerValidateEventArgs args)

{

    DateTime minDate = DateTime.Parse("1000/12/28");

    DateTime maxDate = DateTime.Parse("9999/12/28");

    DateTime dt;


    args.IsValid = (DateTime.TryParse(args.Value, out dt) 

                    && dt <= maxDate 

                    && dt >= minDate);

}


查看完整回答
反对 回复 2019-11-30
?
繁花如伊

TA贡献2012条经验 获得超12个赞

我认为必须在当前应用程序区域中指定日期。您可能想尝试将CultureInvariantValues设置为true,看看是否可以解决您的问题。否则,您可能需要更改当前区域性(或区域性本身)的DateTimeFormat以获得所需的内容。


查看完整回答
反对 回复 2019-11-30
  • 3 回答
  • 0 关注
  • 605 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信