比较验证器不适用于ajax Calendar Extender

时间:2013-07-27 10:42:51

标签: asp.net ajax c#-4.0 ajaxcontroltoolkit

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

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

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

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

1/1/2001

2001年1月1日

5/4/2012

这两个文本框接受的格式如'27 / 07/2013'。

1 个答案:

答案 0 :(得分:0)

问题不在Ajax Control Toolkit中。

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

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