首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用ASP.NET验证器进行日期验证

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

Stack Overflow用户
提问于 2009-06-02 14:09:51
回答 4查看 170K关注 0票数 66

我正在尝试使用ASP.NET RangeValidator来验证文本框上的日期。在文本框中输入的日期格式为dd MMMM yyyy

如何使用范围验证器验证有效日期?如果我输入1 1月1000作为最小或最大值,我会得到一个错误,指出值不能转换为类型日期,但如果我使用另一种格式,它会将我输入的文本作为无效文本。

下面是我的代码:

代码语言:javascript
复制
<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>
EN

回答 4

Stack Overflow用户

发布于 2009-06-02 14:21:22

最好的选择是

将比较验证器添加到web表单。设置其controlToValidate。将其Type属性设置为Date。将其operator属性设置为DataTypeCheck,例如:

代码语言:javascript
复制
<asp:CompareValidator
    id="dateValidator" runat="server" 
    Type="Date"
    Operator="DataTypeCheck"
    ControlToValidate="txtDatecompleted" 
    ErrorMessage="Please enter a valid date.">
</asp:CompareValidator>
票数 133
EN

Stack Overflow用户

发布于 2009-06-02 14:43:04

CustomValidator也可以在这里工作:

代码语言:javascript
复制
<asp:CustomValidator runat="server"
    ID="valDateRange" 
    ControlToValidate="txtDatecompleted"
    onservervalidate="valDateRange_ServerValidate" 
    ErrorMessage="enter valid date" />

代码隐藏:

代码语言:javascript
复制
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);
}
票数 27
EN

Stack Overflow用户

发布于 2012-02-01 02:23:07

我认为下面是最简单的方法。

代码语言:javascript
复制
<asp:TextBox ID="DateControl" runat="server" Visible="False"></asp:TextBox>
<asp:RangeValidator ID ="rvDate" runat ="server" ControlToValidate="DateControl" ErrorMessage="Invalid Date" Type="Date" MinimumValue="01/01/1900" MaximumValue="01/01/2100" Display="Dynamic"></asp:RangeValidator>
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/939802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档