0

我有两个接受日期的文本框。我使用了一个比较验证器来检查在第二个文本框中输入的日期是否 >= 在第一个文本框中输入的日期。

<table>
    <tr>
        <td>
            <asp:Label runat="server" ID="lblDate" Width="200px" Text="Date Posted:"></asp:Label></td>
        <td>
            <asp:TextBox ID="txtDatePosted" runat="server" Width="200px" CausesValidation="true"></asp:TextBox>
            <asp:Image ID="Image1" runat="server" Width="16px" AlternateText="" ImageUrl="~/Image/cal.jpg" Height="16px" />
            <ajaxToolkit:CalendarExtender ID="calExtDatePost" runat="server" Format="dd/MM/yyyy" PopupButtonID="btnCalenderPopup" PopupPosition="TopRight" TargetControlID="txtDatePosted" />
        </td>
    </tr>
    <tr>
        <td>
            <asp:Label runat="server" ID="lblExpiryDate" Width="200px" Text="Expiry Date:"></asp:Label></td>
        <td>
            <asp:TextBox ID="txtExpdate" runat="server" Width="200px" CausesValidation="true"></asp:TextBox>
            <asp:Image ID="Image2" runat="server" Width="16px" AlternateText="" ImageUrl="~/Image/cal.jpg" Height="16px" />
            <ajaxToolkit:CalendarExtender ID="CalendarExtender1" runat="server" Format="dd/MM/yyyy" PopupButtonID="btnCalenderPopup" PopupPosition="TopRight" TargetControlID="txtExpdate" />
            <asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="Expiry date must be greater than Posted date" ControlToCompare="txtDatePosted" ControlToValidate="txtExpdate" Operator="GreaterThanEqual" ValidationGroup="vsNewUser" Type="Date" Text="*Expiry date must be greater than Posted date"></asp:CompareValidator>
        </td>
    </tr>
</table>

但是验证器不起作用。它总是显示错误消息。请帮我。

我知道比较验证器采用以下格式:

2001 年 1 月 1 日

2001 年 1 月 1 日

2012 年 5 月 4 日

这两个文本框接受格式为“27/07/2013”​​的日期。

4

1 回答 1

0

问题不在 Ajax Control Toolkit 中。

您的代码不起作用,因为CompareValidator使用System.Globalization.DateTimeFormatInfo.CurrentInfo.ShortDatePattern属性来确定如何将字符串转换为日期。CompareValidator支持ymd,mdydmy日期格式。

要解决您的问题,您需要明确Page.Culture指定DateTimeFormatInfo.CurrentInfo.ShortDatePattern等于dd/MM/yyyy. 例如en-GB.

于 2013-07-28T11:50:34.357 回答