使用ASP.NETvalidation器进行datevalidation
我正在尝试使用ASP.NET RangeValidator
来validation文本框上的date。 在文本框中inputdate的格式是dd MMMM yyyy
。
我如何使用范围validation器来validation有效的date? 如果我input1000年1月1日作为最小或最大值,我会得到一个错误说,值不能转换为typesdate,但如果我使用另一种格式,它将我input的文本作为无效。
以下是我的代码:
<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>
最好的select是
将一个比较validation器添加到Web窗体。 设置其controlToValidate。 将它的Type属性设置为Date。 将其运营商属性设置为DataTypeCheck例如:
<asp:CompareValidator id="dateValidator" runat="server" Type="Date" Operator="DataTypeCheck" ControlToValidate="txtDatecompleted" ErrorMessage="Please enter a valid date."> </asp:CompareValidator>
一个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); }
我认为以下是最简单的方法。
<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>
我认为这些date必须在当前的应用文化中加以说明。 你可能想试试将CultureInvariantValues设置为true,看看是否能解决你的问题。 否则,您可能需要更改当前文化(或文化本身)的DateTimeFormat以获取所需内容。