compareValidator与带日期的文本框比较

时间:2012-03-05 12:49:41

标签: asp.net vb.net comparevalidator

我的比较验证器即使它更大,即使它更小,也会始终触发。

<tr>
    <td>
        Selection Start Date:
    </td>
    <td>
        <asp:TextBox ID="SelectionStartDateTextBox" runat="server" 
                    Text='<%# Bind("SelectionStartDate") %>'></asp:TextBox>
        <asp:RequiredFieldValidator runat="server" ID="RequFilesStart" 
                    ControlToValidate="SelectionStartDateTextBox"
            ErrorMessage="Enter Selection Start date!" ValidationGroup="validation1">
        </asp:RequiredFieldValidator>
    </td>
</tr>
<tr>
    <td>
        Selection End Date:
    </td>
    <td>
        <asp:TextBox ID="SelectionEndDateTextBox" runat="server" 
                   Text='<%# Bind("SelectionEndDate") %>'></asp:TextBox>
        <asp:RequiredFieldValidator runat="server" ID="ReqFiledEnd" 
                    ControlToValidate="SelectionEndDateTextBox"
            ErrorMessage="Enter Selection End date!" ValidationGroup="validation1">
        </asp:RequiredFieldValidator>
        <asp:CompareValidator ID="CompareValSelDate" runat="server" 
            ControlToValidate="SelectionEndDateTextBox"
            ControlToCompare="SelectionStartDateTextBox" 
            CultureInvariantValues="true" Type="Date"
            Operator="LessThanEqual" ValidationGroup="validation1" 
            ErrorMessage="Selection End Date should be greater then Selected start date"
            Display="dynamic">        

        </asp:CompareValidator>
    </td>
</tr>

我也设置了Culture =“en-GB”,并且在我的网络配置中也设置了它。 我正在使用Ajax工具包来显示附加到TextBox的日历

<cc1:calendarextender id="Calendarextendera3" runat="server" format="dd MMM yyyy"
            targetcontrolid="SelectionEndDateTextBox">
</cc1:calendarextender>

<cc1:calendarextender id="Calendarextendera4" runat="server" format="dd MMM yyyy"
            targetcontrolid="SelectionStartDateTextBox">
</cc1:calendarextender>

请帮助我不知道该怎么做。

提前致谢

1 个答案:

答案 0 :(得分:2)

你应该设置

CultureInvariantValues="false" 
在您的CompareValidator中

。也是,日期格式应该是您当前文化的格式。 CompareValidator似乎无法比较格式dd MMM yyyy。如果要显示此格式,可以使用自定义验证器来比较日期:

  <asp:CustomValidator runat="server" ID="datesValidator" OnServerValidate="DatesValidator_Validate" ErrorMessage="end date should be greater than  or equal to start date"></asp:CustomValidator>

protected void DatesValidator_Validate(object source, ServerValidateEventArgs args)
{
    DateTime startDate = Convert.ToDateTime(SelectionStartDateTextBox.Text);
    DateTime endDate = Convert.ToDateTime(SelectionEndDateTextBox.Text);

    if (endDate < startDate)
    {
        args.IsValid = false;
    }
}