我的比较验证器即使它更大,即使它更小,也会始终触发。
<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>
请帮助我不知道该怎么做。
提前致谢
答案 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;
}
}